将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号发票。
该怎么做?预先感谢。
答案 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。