Yii2:如何显示条形码?

Yii2:如何显示条形码?,yii2,barcode,barcode-printing,Yii2,Barcode,Barcode Printing,我有一个功能,打印到PDF在我的控制器。它接收条形码的HTML代码,并将其发送到_print-tags文件 我的控制器文件: public function actionPrintTags($barcode) { Yii::$app->response->format = 'pdf'; return $this->renderPartial('_print-tags', [ 'bar' => $barcode, ]); } &l

我有一个功能,打印到PDF在我的控制器。它接收条形码的HTML代码,并将其发送到_print-tags文件

我的控制器文件:

public function actionPrintTags($barcode)
{
    Yii::$app->response->format = 'pdf';

    return $this->renderPartial('_print-tags', [
        'bar' => $barcode,
    ]);
}
<body>
    <?= $bar . '<br/>' ?>
</body>
我的打印标签文件:

public function actionPrintTags($barcode)
{
    Yii::$app->response->format = 'pdf';

    return $this->renderPartial('_print-tags', [
        'bar' => $barcode,
    ]);
}
<body>
    <?= $bar . '<br/>' ?>
</body>

但它表明:

如果我把它展示在我的视野中,它看起来很完美:

我用

更新:$barcode具有创建条形码的HTML代码:

<div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 4px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 3px"></div><div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 3px"></div><div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 2px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 2px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 4px solid #000000; height: 50px;"></div><div style="float: left; font-size: 0px; background-color: #FFFFFF; height: 50px; width: 1px"></div><div style="float: left; font-size: 0px; width:0; border-left: 1px solid #000000; height: 50px;"></div><div style="clear:both; width: 100%; background-color: #FFFFFF; color: #000000; text-align: center; font-size: 10px; margin-top: 5px;">A</div>
A

这可能是mPDF的限制。mPDF不完全支持HTML和CSS功能,有些东西的呈现方式可能与浏览器不同

CSS属性
float
在mPDF中得到部分支持,允许块元素(p、div等)彼此并排放置。它们还可用于创建跨越多个页面的“列”

限制:

  • 只有为浮动设置了宽度,浮动才能正常工作
  • 如果未设置宽度,则将宽度设置为最大可用宽度(全宽度,如果已设置浮动,则设置为更小)
  • 浮动旁边的块元素调整了填充,使内容适合剩余宽度
  • 浮动旁边的文本应正确换行,但背景和边框将重叠和/或凌乱地位于浮动下方
  • 如果正在使用列,则不起作用
  • 您不能在使用浮动的过程中更改页边距/方向等
  • 浮动仅在块元素上受支持(即不支持跨度等)


您可以尝试使用此HTML并使用一些替代项(如
display:inline block
而不是
float:left
),或者为父容器设置一些宽度。
但切换到能够将条形码呈现为图像的库(例如)可能会很简单-对于PDF生成器来说,简单的PNG应该不会太麻烦。

什么是
$bar
?看起来有一些样式问题。为条形码添加相关代码您已为添加的代码根据文档,您必须生成带有要显示的元素的特定id的条形码in@MuhammadOmerAslam:id是A。