有没有可以使用PHP PDF库 更换占位符变量 在现有的PDF,ODT或DOCX文档中,并生成PDF文件作为最终结果,而不会搞砸布局?

要求:

  • 不需要第三方网络服务

  • 在共享网络托管上运行的能力将是理想的(无需二进制安装 /软件包)

请注意,一个能够在特定位置以编程方式插入现有PDF文件并插入文本的库是 不够 对于我的用例。

就我的研究表明,没有图书馆可以做到这一点:

  • TCPDF只能从头开始生成文档

  • FPDI可以读取现有的PDF模板,但只能以编程方式添加内容(无模板变量替换)

  • 那里有各种DOCX/ODT模板库,但它们不输出PDF

phpdocx 声称能够做我需要的事情 - 但是他们不提供试用版,我不会在袋子里买猫,尤其是在似乎没有 没有其他产品 在这样做的网络上。我发现很难相信他们可以毫无问题地做到这一点 - 如果您使用该产品成功完成了此操作,请在此处放置一条线。

我忽略了什么吗?

有没有办法使用PDF表单来执行此操作?我正在OpenOffice 3中创建源文档。

我也许可以使用标准Linux命令(pdftk 例如,现在可以立即尝试。)

更新: *arg!*我被叫出办公室,赏金在此期间到期。开始一个新的赏金:就我的测试表明,还没有解决方案对我有效。

更新II: 我很快就会寻找PDFTK方法,但我也将开始另一个赏金,以便再收集额外的投入。这个问题现在已经有1300点赏金,必须是某种唱片:)

有帮助吗?

解决方案

佩卡,

我以前看过这个,我想你可以使用 pdftk (命令行实用程序),使用FDF/XFDF数据文件填充PDF表单,您可以在PHP内轻松生成。这是我到目前为止看到的最好的选择,尽管很可能有一个本地图书馆。

pdftk 一般而言,非常有用,值得一看。

更新: 在这里看: http://php.net/manual/en/book.fdf.php

其他提示

这不是很实用,而是完整的:如果您已经有一个ODT模板,那么您很可能将其保留为模板。修改Opentocument content.xml和更换其中的占位符非常简单。如果是这样,您可以使用 unoconv 或者 pyodconverter 将ODT转换为最终的PDF。

unoconv -f pdf -o final.pdf template.odt

显然,这需要网络服务器上的完整的OpenOffice设置(UNO和Writer)。显然,并非每个网络摄影师都会随心所欲!哈哈。即使在任何Debian或Fedora设置上都很简单。执行速度可能也不是出色的。但是,这可能是最干净的方法,因为OOO控制这两种格式都比任何PHP类别都更好。

您是否考虑过使用XSL之类的内容:格式化对象(XSL:FO)?基本上,它们是处理并将其变成PDF的XML文档。进行字符串 - 或更好的是,其中的替换应该非常简单。它支持嵌入图像,链接,注释等。

它不是PHP,但是有许多PHP包装器以及通过Exec等使用它的方法。不是理想的,而是完全照顾模板部分。有关更多信息: http://techportal.inviqa.com/2009/12/16/transforming-xml-with-with-php-and-xssl/

有一个Apache项目可用的实现 - http://xmlgraphics.apache.org/fop/

FPDF,还有另一个扩展,我不记得了,它允许您导入模板

最好的选择是,使用FPDF或类似的内容在编程中定义模板,以生成整个文档。这样,您的文本将不会被段落或类似内容切断,并且您可以根据需要轻松定位图像/其他元素。

迟到,但是您可以使用OpenSource模板设计器 https://github.com/applicius/dhek/releases ,要在任何现有的PDF上定义PKACEHOUSTER/区域,然后将其加载到PHP(作为JSON格式)中,并使用FPDF LIB在原始PDF上编写,以生成具有写入动态数据的自定义PDF。

Altough并不是您所要求的,您可能会考虑在两个步骤中进行:使用一些PHP模板Sytem(聪明, dwoo)生成HTML页面,然后使用诸如此类的工具 html2pdf 将其转换为PDF。我正在使用它,结果很好(页面布局没有问题等)

当然,这取决于您的输入文档(您可以使用HTML代替PDF/ ODT作为源)和布局的复杂性。

好的,我试图帮助您解决问题。

首先,您的问题的答案。

问 - 我在俯瞰什么吗?

a-不。有一个PHP PDF库可以替换现有PDF中的占位符变量并生成PDF文件作为最终结果,而无需拧紧布局

问 - 有没有办法使用PDF表单来执行此操作?

A-是的。绝对执行此操作的三分法是使用PDF表单

对于这两个答案,您可以使用Justin Koivisto填充PDF表单Field PHP库。有关更多细节,请转到 http://koivi.com/fill-pdf-form-fields/tutorial.php。在那里查看更多信息。

感谢贾斯汀·科维斯托(Justin Koivisto)的工作

PS

对于显示出PDF表格的表格的表,请考虑进行一些阅读 Oracle Business Intelligence Publisher用户指南 - 创建PDF模板

我会添加这个新答案,因为FDF PHP扩展已死。

我刚刚跟随 这些说明 并最终执行一个perl脚本,然后执行pdftk命令

我很清楚这远非真正的PHP解决方案,但是在任何 *NIX平台上都非常易于实现。

Debian上描述的工具也可以使用,以防万一您想知道。

迟到了,但要看一下 pdftemplate 图书馆确实可以随心所欲。您可以创建打开的文档文件(ODT)并在其中添加占位符。 PDFTEMPLATE库可以填写这些占位符(即使使用图像)并创建PDF文件。

与占位符的ODT文件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top