【问题标题】:HTML to PDF converter in PHP [closed]PHP中的HTML到PDF转换器[关闭]
【发布时间】:2023-03-28 07:38:01
【问题描述】:

为了从 html 页面生成 pdf,我尝试了许多 pdf 库,例如 FPDF、HTML2FPDF、CEZPDF、DOMPDF 和 MPDF。

但在每个 pdf 库中,我都发现了一些无法生成所需页面布局的问题。

例如,在 MPDF 中,我发现了分页符,但它是一个不错的 html 到 pdf 转换器。

所以请建议我应该使用哪个库来生成 pdf?我不在乎它是否需要购买。

提前致谢。

【问题讨论】:

    标签: html pdf converter


    【解决方案1】:

    我想知道您为什么没有尝试当前最稳定的版本 TCPDF。 Here 是您正在寻找的清晰示例。

    <?php
    
    require_once('tcpdf_include.php');
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 049');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 049', PDF_HEADER_STRING);
    
    ]$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
    
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    
    if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
        require_once(dirname(__FILE__).'/lang/eng.php');
        $pdf->setLanguageArray($l);
    }
    $pdf->SetFont('helvetica', '', 10);
    
    $pdf->AddPage();
    
    
    $html = '<h1>Test TCPDF Methods in HTML</h1>
    <h2 style="color:red;">IMPORTANT:</h2>
    <span style="color:red;">If you are using user-generated content, the tcpdf tag can be unsafe.<br />
    You can disable this tag by setting to false the <b>K_TCPDF_CALLS_IN_HTML</b> constant on TCPDF configuration file.</span>
    <h2>write1DBarcode method in HTML</h2>';
    
    $params = TCPDF_STATIC::serializeTCPDFtagParameters(array('CODE 39', 'C39', '', '', 80, 30, 0.4, array('position'=>'S', 'border'=>true, 'padding'=>4, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N'));
    $html .= '<tcpdf method="write1DBarcode" params="'.$params.'" />';
    
    $params = TCPDF_STATIC::serializeTCPDFtagParameters(array('CODE 128', 'C128', '', '', 80, 30, 0.4, array('position'=>'S', 'border'=>true, 'padding'=>4, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N'));
    $html .= '<tcpdf method="write1DBarcode" params="'.$params.'" />';
    
    $html .= '<tcpdf method="AddPage" /><h2>Graphic Functions</h2>';
    
    $params = TCPDF_STATIC::serializeTCPDFtagParameters(array(0));
    $html .= '<tcpdf method="SetDrawColor" params="'.$params.'" />';
    
    $params = TCPDF_STATIC::serializeTCPDFtagParameters(array(50, 50, 40, 10, 'DF', array(), array(0,128,255)));
    $html .= '<tcpdf method="Rect" params="'.$params.'" />';
    $pdf->writeHTML($html, true, 0, true, 0);
    
    $pdf->lastPage();
    $pdf->Output('example_049.pdf', 'I');
    
    ?>
    

    【讨论】:

      【解决方案2】:

      你可以试试这个http://www.tcpdf.org/。网站提供了一些很好的例子,您也可以根据自己的风格设计页面布局

      【讨论】:

        【解决方案3】:

        我使用过 TCPDF 和 DOMPDF。

        为:

        • TCPPDF:
          • 您可以非常轻松地设计页面布局
        • DOMPDF:
          • 几乎所有的css功能都支持,如果你用html、css设计页面,打印出来的pdf都是一样的。这是互联网上最简单的图书馆。
          • 您也可以使用 php 脚本,DOMPDF 将在生成 pdf 时运行它。

        反对:

        • TCPPDF:
          • 你必须写很多...
          • css 很难用
        • DOMPDF:
          • 在大型表上,它会消耗大量内存,并且可能会崩溃。
          • 棘手的页面布局设计(页眉和页脚)

        【讨论】:

          【解决方案4】:

          试试 HTM2PDF - 它支持分页、单页布局和许多其他选项。

          HTML to PDF API 可用于所有编程语言以及 PHP HTML to PDF SDK。

          【讨论】:

            【解决方案5】:

            使用此工具。这样会更好

            http://sourceforge.net/projects/html2fpdf/

            【讨论】:

              猜你喜欢
              • 2011-02-24
              • 2015-11-04
              • 2011-07-27
              • 1970-01-01
              • 2012-10-01
              • 2010-11-27
              • 1970-01-01
              • 2011-08-01
              相关资源
              最近更新 更多