Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML到PDF与通过PHP编程创建PDF_Php_Pdf Generation - Fatal编程技术网

HTML到PDF与通过PHP编程创建PDF

HTML到PDF与通过PHP编程创建PDF,php,pdf-generation,Php,Pdf Generation,我有一个PHP应用程序,需要生成一些带有漂亮页眉/页脚的PDF发票和PDF时间表。一些Stackoverflow用户建议使用TCPDF创建PDF文档。在我的研究中,我发现了两种生成PDF的方法: 1) 以编程方式格式化PDF,如下所示: $tcpdf->SetFillColor(255, 0, 0); $tcpdf->SetTextColor(255); $tcpdf->SetDrawColor(128, 0, 0); $tcpdf->Se

我有一个PHP应用程序,需要生成一些带有漂亮页眉/页脚的PDF发票和PDF时间表。一些Stackoverflow用户建议使用TCPDF创建PDF文档。在我的研究中,我发现了两种生成PDF的方法:

1) 以编程方式格式化PDF,如下所示:

    $tcpdf->SetFillColor(255, 0, 0);
    $tcpdf->SetTextColor(255);
    $tcpdf->SetDrawColor(128, 0, 0);
    $tcpdf->SetLineWidth(0.3);
    $tcpdf->SetFont('', 'B');
2) 将HTML转换为PDF


我如何决定应该使用哪种方法

我总是建议动态创建PDF,但要基于可以使用最终用户工具编辑的模板,或者——至少——不必是程序员。在您的例子中,可能是HTML。对我来说,理想的解决方案是采用Office模板,以编程方式将其填充值,并在技术上可能的情况下将其输出为PDF。我用PHP做office模板填充部分,效果很好

使用基于模板的方法而不是从头开始生成文档的主要原因是:用户可以根据自己的需要设计模板,当设计需要更改时,不需要您。只有当插入的数据需要以某种方式更改或扩展时,程序员才开始工作。这对您来说是一个巨大的工作量。

我可以推荐,根据您的分类,这是一种编程方法

HTML抽象很好,但我不相信您拥有基于完整几何图形的绘图API的全部功能和控制能力。小心像fpdf这样不支持UTF-8开箱即用的库,并使用穷人的解析器将HTML“转换”为PDF

关于你的申请,我制作了一个生成模板发票的系统。我的用户可以上传由Zend_PDF提取的PDF模板。然后,该模板用于生成的发票的每一页,便于定制


请注意,我的受众主要是能够制作这些模板的图形设计师,因此这是合适的解决方案。如果您的读者只熟悉HTML,那么将HTML转换为PDF可能是最好的方法。

我还建议将HTML转换为PDF:

  • 这更容易实现
  • 以后更容易更改布局/设计
  • 您可能可以重用页面的一些html

有一次我为我使用的网站创建了一个PDF版本,之后将postscript转换为PDF。

您好,您有两个选择。您可以使用,这使您能够将文档设计为常规html文档并使用css设置样式。您可以将此文档转换为pdf格式。我的经历很好。我使用Zend_视图呈现一个常规html页面,并将其转换为pdf。这样,您就拥有了一个非常灵活的模板,因为您可以在html生成视图中做出各种显示决策

→ 看


或者,您可以使用。这也允许使用基于模板的方法,但更加严格,html更少。A正在进行中。

我建议使用编程格式

在.net世界中,我对html到pdf转换器有过明显的负面体验。它们似乎分为两类:

那些“解析”你的html并试图将其转换为pdf的。它们通常缺少一些真正基本的特性,比如样式表和对基于表的布局以外的任何东西的支持

将html“打印”到图像并粘贴到pdf中的那些。这些实际上可以生成一个外观不错的文档。它们似乎通过将浏览器链接到库中来工作,这会导致线程问题和性能低下


我在直接使用pdf API方面的经验一般,但php在这方面似乎有一些更好的库

我对这三种方法都有丰富的经验:

  • 使用TCPDF以编程方式创建文档(尽管它是从FPDF派生的,但它支持UTF-8开箱即用)。尽管我是Zend Framework的超级粉丝,但需要注意的是,Zend_Pdf的功能集还不够丰富,无法以这种方式使用

  • 让平面设计师创建模板,使用Zend_Pdf加载模板,然后向模板添加其他内容。Zend_Pdf(1.10.2-1.10.7)在这种情况下工作得相当好,除了尝试实例化一个新页面并将其添加到文档中时——这会引发大量错误

  • 使用htmldoc从HTML转换为PDF。这种方法很糟糕,但主要是由于htmldoc的限制


  • 我还没有使用TCPDF进行HTML到PDF的转换,但是从代码的整体质量来看,我猜它会做得很好。(我真的把TCPDF推到了极限,包括用RTL字符集、中文等呈现图形丰富的文档,而且它的性能完美无瑕)。因此,如果您决定以编程方式进行,我建议您使用TCPDF,但是如果您有一个来自图形设计师的好模板,并且打算在上面添加内容,那么使用Zend_Pdf加载它并从那里进行修改是一个合理的选择(尽管您最终仍然会实现单词包装和其他一些基本内容).

    这对于php世界来说确实是完全不同的。像Zend_Pdf这样的编程库很糟糕。就像我推荐的那样,dompdf在html到pdf中非常好。它没有链接图书馆里的浏览器或类似的东西(甚至没有人敢去想这件事)。这里有一个很好的教程,我相信它一定会帮助你。上面的链接现在似乎已经过时了。链接被断掉了。Pdf被放弃了,他们建议作为替代品。