题
有没有可以使用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。
好的,我试图帮助您解决问题。
首先,您的问题的答案。
问 - 我在俯瞰什么吗?
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文件。