如何使用JsBarcode.js生成条形码并使用Yii framework 2.0中的Kartik mPDF将其打印在PDF文件上

时间:2015-09-03 12:35:19

标签: javascript php yii2 barcode mpdf

我在Kartik mPDF内安装了Yii framework 2.0个扩展程序。下面是我的控制器中的代码片段,它生成PDF文件并将其发送到浏览器。

// setup kartik\mpdf\Pdf component
    $pdf = new Pdf([
        'mode' => Pdf::MODE_CORE, 
        'format' => Pdf::FORMAT_A4, 
        'orientation' => Pdf::ORIENT_PORTRAIT, 
        'destination' => Pdf::DEST_BROWSER, 

        // your html content input
        'content' => $this->renderPartial('print-barcode'),  

        'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
        'cssInline' => '.kv-heading-1{font-size:18px}', 
        'options' => ['title' => 'My PDF file'],
        'methods' => [ 
            'SetHeader'=>['My header'], 
            'SetFooter'=>['{PAGENO}'],
        ]
    ]);

    return $pdf->render(); 

我有两个JS文件(JsBarcode.jsCODE128.js),可在此处找到https://github.com/lindell/JsBarcode 要生成条形码,我需要包含这些JS文件和我的自定义JavaScript代码。在我看来,我通常包括以下文件(我的print-barcode.php)。

<?php
$this->registerJsFile(Yii::$app->urlManager->baseUrl . '/js/JsBarcode.js', ['depends' => [\yii\web\JqueryAsset::className()]]);
$this->registerJsFile(Yii::$app->urlManager->baseUrl . '/js/Code128.js', ['depends' => [\yii\web\JqueryAsset::className()]]);

$jsGenerateBarcode = 'My custom Javascript code goes here ...';
$this->registerJs($jsGenerateBarcode, $this::POS_END);
?>

所有包含的JavaScript代码根本没有任何效果,因为它是PDF文件而不是网页。如何打印由JsBarcode.jsCODE128.js生成的条形码并将其传递到由kartik\mpdf\Pdf;生成的PDF文件?

1 个答案:

答案 0 :(得分:1)

抱歉这么晚了,但这对我有用。您应该首先使用信息创建一个视图,然后使用 renderPartial 并将其发送到 mpdf。

我的视图包含:

<script src="<?=yii::$app->params['rootUrl']?>/js/JsBarcode.code128.min.js"></script>

<p>Safety is Everyone's Responsibility</p>
<p><barcode code="<?=$model->qrcode?>" type="C128A" class="barcode" size="0.8" /></p>

并进行测试:

return $this->renderPartial('_print-view',['model'=>$myModel]);

最后打印pdf(我正在打印徽章,所以我在玩边距):

$mpdf = new \Mpdf\Mpdf([  
//'mode' => 'c'
'margin_left' => 0,
'margin_right' => 0,
'margin_top' => 0,
'margin_bottom' => 0,
'format' => [54,86],
]);

$mpdf->SetTitle('Badge: '.$myModel->badge_number);
$mpdf->WriteHTML($this->renderPartial('_print-view',['model'=>$myModel,'page'=>1]));

$mpdf->AddPage('L');
$mpdf->WriteHTML($this->renderPartial('_print-view',['model'=>$myModel,'page'=>2]));

$mpdf->Output($badge_number,'I');