如何将smarty变量传递给JavaScript并在TCPDF中显示

时间:2018-09-13 03:17:33

标签: javascript php smarty tcpdf

将smarty变量作为以下代码传递给JavaScript:

        var sample = "{$LANG.invoicenumber}{$invoicenum}";

然后我使用echo在PHP中获取变量,如下所示:

        $abc = "<script>document.write(sample)</script>";
        echo  $abc;

因此,php中的输出为确定,输出为:发票#4 ,这意味着smarty变量已成功传递给php。

因此,现在我想在TCPDF中使用它来生成条形码,使其成为如下所示的值:

            $barcodeobj = new TCPDFBarcode($abc, 'C128');
            echo $barcodeobj->getBarcodeHTML(2, 30, 'black');

但是生成的条形码是完全错误的,实际上条形码会生成此文本<script>document.write(sample)</script>而不是值   4号发票

该怎么做?预先感谢。

1 个答案:

答案 0 :(得分:0)

这是错误的方法(TCPDF支持PDF,PNG,SVG,HTML)...从JavaScript到TCPDF传递变量是没有意义的;就像混淆Smarty输出和TCPDF输出一样。而是这样工作:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$style = array( ... );
$pdf->addPage();

/* CODE 128 AUTO */
$pdf->write1DBarcode('CODE 128 AUTO', 'C128', '', '', '', 18, 0.4, $style, 'N');

/* CODE 128 A */
$pdf->write1DBarcode('CODE 128 A', 'C128A', '', '', '', 18, 0.4, $style, 'N');

/* CODE 128 B */
$pdf->write1DBarcode('CODE 128 B', 'C128B', '', '', '', 18, 0.4, $style, 'N');

/* CODE 128 C */
$pdf->write1DBarcode('0123456789', 'C128C', '', '', '', 18, 0.4, $style, 'N');

如果需要(或者更好的说,如果必须是Smarty的话),您可以创建一个自定义的Smarty modifier,它使用TCPDF获取条形码的HTML表示形式-同时直接渲染图形表示形式转换为PDF。

请参见TCPDFBarcode