【问题标题】:Converting HTML to PDF via PHP (install font for html2pdf)通过 PHP 将 HTML 转换为 PDF(为 html2pdf 安装字体)
【发布时间】:2015-12-30 12:15:30
【问题描述】:

我目前正在尝试通过 PHP 脚本将 HTML 标记(从 xml 提要)动态转换为 PDF。

通过阅读其他答案,最好的免费方法似乎是使用html2pdf

// HTML2PDF
require_once('/public_html/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','en');
$html2pdf->WriteHTML($htmlContent);
$html2pdf->Output('/public_html/wp-content/uploads/rns/html2pdf.pdf');

我遇到的问题是我的 $htmlContent 在各个地方包含 css: FONT-FAMILY: "Times New Roman","serif" 并且我的脚本给出了错误:

TCPDF ERROR: Could not include font definition file: "times new roman"

我用谷歌搜索过,唯一的文档是这样的: http://wiki.spipu.net/doku.php?id=html2pdf:en:v4:font

这反过来又会引导您: http://www.tcpdf.org/fonts.php

不过我迷路了,第二个链接说 times/Times New Roman 是核心 PDF 字体...我尝试了各种方法并得到相同的错误。

我实际上需要写什么来添加字体,或者,我怎样才能从$htmlContent 中删除所有 FONT-FAMILY 类(我什至不需要任何特定字体,只需要一个有效)。

【问题讨论】:

    标签: php pdf fonts tcpdf html2pdf


    【解决方案1】:

    是的,您应该使用 DOMPDF 而不是其他库。有很多可用的字体。您可以在“dompdf/lib/fonts/dompdf_font_family_cache.dist.php”查看并根据您的要求进行选择。要更改字体,您需要更改文件路径 "dompdf/dompdf_config.inc.php" 处的 def("DOMPDF_DEFAULT_FONT", "serif"):

    您可以从以下地址下载最新版本的 DOMPDF:https://code.google.com/p/dompdf/downloads/detail?name=dompdf_0-6-0_beta3.tar.gz&can=2&q=

    请看下面的例子:

    require_once("dompdf/dompdf_config.inc.php");
    $dompdf = new DOMPDF();
    $dompdf->load_html($htmlContent);
    $dompdf->render();                
    
    $fileName = "invoice.pdf";
    $dompdf->stream($fileName);//DOWNLOAD PDF 
    
    //GET OUTPUT AS STRING AND PUT IN TO SOME FILE   
    $output = $dompdf->output();
    file_put_contents($fileName, $output);
    

    【讨论】:

    • 使用这个工作......干杯!快速说明一下,我在 github (0.7 beta) 上找到了一个较新版本的 DOMPDF,它不适用于上面的代码,看起来他们已经改变了一些东西,这篇文章中链接中的那个做了我不过需要。
    • 对不起... 很快就谈到了,DOMPDF 在使用这种方法转换 HTML 表格时失败了,并且有特殊字符的问题。对我不可用。似乎有很多 HTML 到 PDF 的解决方案,除非你做一些非常基本的事情,否则我不会推荐 DOMPDF。
    【解决方案2】:

    这有点小技巧,但我发现对我来说最好的方法是使用 exec 调用 capturejs:

    $run = "capturejs -u ";
    $run .= "https://www.example.com/";
    $run .= " -p tlsv1 -V ";
    $run .= "1024x768";
    $run .= " -o 'myimage.png'";
    exec($run);
    

    https://github.com/superbrothers/capturejs

    【讨论】:

      【解决方案3】:

      尝试使用 DomPdf 而不是 html2pdf。它非常适合我以 PDF 格式创建发票。但是需要在 CSS 代码中进行一些处理(定位和字体大小)。按原样放置的屏幕内容没有按我预期的那样工作。 https://github.com/dompdf/dompdf

      【讨论】:

      • 我之前确实看过,但无法弄清楚。似乎没有任何 php 示例或文档......你认为你可以举一个例子来说明如何用 DomPdf 做我上面的等效操作吗?只需获取一串html $htmlContent 并输出pdf(到文件)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2016-05-31
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多