如何在使用tcpdf时以html格式编写条形码

时间:2010-05-10 05:27:20

标签: php pdf pdf-generation barcode tcpdf

我使用TCPDF使用以下命令生成PDF文件

$pdf->writeHTML($htmlcontent, true, 0, true, 0);

TCPDF还提供了使用以下命令创建条形码的方法

$pdf->Cell(0, 0, 'C39+', 0, 1);
$pdf->write1DBarcode('Code 39', 'C39+', '', '', 80, 15, 0.4, $style, 'N');
$pdf->Ln();

我希望能够将条形码作为上述HTML代码的一部分。有简单的方法吗?

我可以在上面的writeHTML代码中调用条形码图像,但不知道如何使用上面的条形码函数(或任何在TCPDF中),这将允许我创建图像,然后将该图像转换为HTML生成。

5 个答案:

答案 0 :(得分:13)

您可以在HTML中编写TCPDF方法,如下所示

<?php
$params = $pdf->serializeTCPDFtagParameters(array('40144399300102444888207482244309', 'C128C', '', '', 0, 0, 0.2, array('position'=>'S', 'border'=>false, 'padding'=>4, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>false, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>2), 'N'));    
$str='<table cellspacing="0" cellpadding="1" border="0">            
<tr> 
    <td align="left">barcode</td>
</tr>
<tr> 
    <td align="center" style="padding-left:5px;">';
    $str .= '<tcpdf method="write1DBarcode" params="'.$params.'" />';
    $str .='</td>
</tr>
</table>';

$pdf->writeHTML($str,true, false,false,false,'left');
$pdf->Output('example_049.pdf', 'I');
?>

有关详细信息,请查看TCPDF example_049.php

答案 1 :(得分:8)

TCPDF条形码类已经包含以各种格式(SVG,PNG和HTML)导出条形码的方法。

2D示例:

require_once(dirname(__FILE__).'/2dbarcodes.php');
$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H');

// export as SVG image
//$barcodeobj->getBarcodeSVG(3, 3, 'black');

// export as PNG image
//$barcodeobj->getBarcodePNG(3, 3, array(0,128,0));

// export as HTML code
echo $barcodeobj->getBarcodeHTML(3, 3, 'black');

1D示例:

require_once(dirname(__FILE__).'/barcodes.php');
$barcodeobj = new TCPDFBarcode('123456', 'C128');

// export as SVG image
//$barcodeobj->getBarcodeSVG(2, 30, 'black');

// export as PNG image
//$barcodeobj->getBarcodePNG(2, 30, array(0,128,0));

// export as HTML code
echo $barcodeobj->getBarcodeHTML(2, 30, 'black');

查看http://www.tcpdf.org上的文档和示例以获取更多信息。

答案 2 :(得分:2)

您可以将条形码编号设为假HTML标记,然后在编写HTML时解析该标记,如本例所示。

这将在您的HTML中:

some HTML.... <POSTNET>12345-1234</POSTNET> ....some more HTML

这是解析伪造标签的代码。

        // look to see if there is a POSTNET tag
        if (strpos($letter_html, "<POSTNET>") !== false) {
            $postnet_pre = explode("<POSTNET>", $letter_html);
            $this->WriteHTML($postnet_pre[0], $this->line_height);

            // write the barcode
            $postnet_post = explode("</POSTNET>", $postnet_pre[1]);
            $zip_code = $postnet_post[0];
            $this->write1DBarcode($zip_code, 'POSTNET', '', '', 80, 15, 0.4, $style, 'N');

            // write rest of the letter
            $this->WriteHTML($postnet_post[1], $this->line_height);

        } else {

            // no POSTNET so just write the whole letter
            $this->WriteHTML($letter_html, $this->line_height);
        }

答案 3 :(得分:0)

生成条形码时,请确保将12位数的传送点括在“斜杠”字符内。大多数POSTNET字体将斜杠字符渲染为修复条形码值之前/后固定的“控制”字符。没有这些控制字符,条形码在技术上无效。

可以下载TrueType格式的POSTNET barcode font

答案 4 :(得分:0)

我尝试了以下方法并且奏效了:

$params = $pdf->serializeTCPDFtagParameters(
    array('https://tcpdf.org/', 'QRCODE,H', '', '', 27, 27, '', 'N')
);

$html .= '<tcpdf method="write2DBarcode" params="'.$params.'" />';