php - 使用 TCPDF 的条码
问题描述
我是 Laravel 的新手并使用条形码生成 pdf,我能够为每个项目的 id 生成条形码并将其作为 html 存储在 db 中,而不是我试图使用 tcpdf 将条形码保存到 pdf 文件,但输出不是'预计。
那是将条形码保存到工作正常的数据库中:
$products = Product::get();
foreach ($products as $p) {
if ($p->barcode == NULL) {
$generator = new Picqer\Barcode\BarcodeGeneratorHTML();
$barcode = $generator->getBarcode($p->id, $generator::TYPE_CODE_128);
$pro = Product::find($p->id);
$pro->barcode = $barcode;
$pro->save();
}
}
这就是我在浏览器中查看条形码的方式
@foreach ($products as $p)
<div class="barcode">
{!! html_entity_decode( $p->barcode ) !!}
<p>Id: {{ $p->id }} </p>
<p> {{ $p->name}} </p>
</div>
@endforeach
这就是条形码存储在数据库中的方式
<div style="font-size:0;position:relative;width:92px;height:30px;">
<div style="background-color:black;width:4px;height:30px;position:absolute;left:0px;top:0"> </div>
<div style="background-color:black;width:2px;height:30px;position:absolute;left:6px;top:0"> </div>
<div style="background-color:black;width:2px;height:30px;position:absolute;left:12px;top:0"> </div>
<div style="background-color:black;width:2px;height:30px;position:absolute;left:22px;top:0"> </div>
<div style="background-color:black;width:6px;height:30px;position:absolute;left:28px;top:0"> </div>
<div style="background-color:black;width:4px;height:30px;position:absolute;left:38px;top:0"> </div>
<div style="background-color:black;width:4px;height:30px;position:absolute;left:44px;top:0"> </div>
<div style="background-color:black;width:6px;height:30px;position:absolute;left:52px;top:0"> </div>
<div style="background-color:black;width:2px;height:30px;position:absolute;left:62px;top:0"> </div>
<div style="background-color:black;width:4px;height:30px;position:absolute;left:66px;top:0"> </div>
<div style="background-color:black;width:6px;height:30px;position:absolute;left:76px;top:0"> </div>
<div style="background-color:black;width:2px;height:30px;position:absolute;left:84px;top:0"> </div>
<div style="background-color:black;width:4px;height:30px;position:absolute;left:88px;top:0"> </div>
</div>
这就是我试图将其保存为pdf的方式
// set style for barcode
PDF::SetMargins(3, 3, 3);
// remove default header/footer
PDF::setPrintHeader(false);
PDF::setPrintFooter(false);
PDF::setFontSubsetting(true);
PDF::SetFont('freeserif', '', 12);
// define barcode style
$style = array(
'border' => true,
'hpadding' => 'auto',
'vpadding' => 'auto',
'fgcolor' => array(0,0,0),
'bgcolor' => false, //array(255,255,255),
'text' => true,
'font' => 'helvetica',
'fontsize' => 8,
'stretchtext' => 4
);
PDF::SetTitle('Hello World');
PDF::AddPage();
PDF::Cell(0, 0, $products[0]->name, 0, 1);
$code = PDF::serializeTCPDFtagParameters($products[0]->barcode);
PDF::write1DBarcode($code, 'C39', '5', '5', '60', 14, 0.4, $style, 'N');
PDF::Ln(5);
PDF::Output('example_049.pdf', 'I');
这就是我得到的输出:
提前致谢
解决方案
我认为您应该将 db 中的 id 保存为 ID,而不是 html。然后,您从数据库中获取 ID 并在 HTML 中为页面视图和/或在 PDF 中生成条形码。
推荐阅读
- html - SVG 变换属性
- angular - ag-grid & angular: autoSizeColumns() 截断单元格文本
- vue.js - 如何将此excel公式转换为vuejs脚本
- tensorflow - 如何在 Keras 的 fit 或 fit_generator 期间获取渐变
- python - 我需要哪个 Pandas 功能?group_by 或 pivot
- callback - New Relic:如何用 startSegment 替换 createTracer
- python - 我在 python 3.5 windows 10 中安装“icu”时遇到问题
- c# - 使用实体框架删除链接到 SQL Server 数据库中另一个数据库表的数据?
- mysql - 我已通过 FTP 将 phpmyadmin 上传到我的服务器上,但我无法访问它
- python - 视图 accounts.views.profile 没有返回 HttpResponse 对象。它返回 None 而不是