带有PDF输出的PHP PDF模板库?
是否有任何PHP PDF库可以replace现有PDF,ODT或DOCX文档中的占位符variables ,并生成PDF文件作为最终结果,而不会影响布局?
要求:
-
不需要第三方networking服务
-
能够运行共享networking托pipe将是理想的(不需要二进制安装/包)
请注意,能够加载现有PDF文件并以编程方式在特定位置插入文本的库对于我的用例来说是不够的。
据我的研究显示,没有图书馆可以做到这一点:
-
TCPDF只能从头开始生成文档
-
FPDI可以读取现有的PDF模板,但只能以编程方式添加内容(不需要模板variablesreplace)
-
有不同的DOCX / ODT模板库,但它们不输出PDF
PHPDOCx声称能够做到我需要的东西 – 但他们不提供试用版本,我不打算买一只猫,特别是当网上似乎没有其他产品这个。 我很难相信他们可以做到这一点没有问题 – 如果您已经成功地使用该产品,请在这里写下一行。
我可以俯视吗?
有没有办法使用PDF表单做到这一点? 我正在OpenOffice 3中创build源文档。
我可以使用标准的Linux命令(例如, pdftk
可用,现在就pdftk
。)
更新: * 唉! *我被叫出了办公室,同时赏金过期了。 开始一个新的赏金:据我的testing显示,没有任何解决scheme完美的作品。
更新II:我很快就会看到pdftk的方法,但是我也开始了另外一个收集额外的input更多的奖金。 这个问题现在已经看到了1300点的赏金,必须是某种logging:)
佩卡,
我以前看过这个,我想你可以使用pdftk (一个命令行实用程序)来使用FDF / XFDF数据文件填写一个PDF格式的表单,这些数据文件可以在PHP中轻松生成。 这是迄今为止我看到的最好的select,尽pipe可能有一个本地库。
一般来说pdftk是相当有用的,值得一看。
更新:看看这里: http : //php.net/manual/en/book.fdf.php
这不是很实际,但为了完整:如果你已经有一个ODT模板,那么你可能会很好地保留它作为模板。 修改OpenDocument content.xml并replace占位符是非常简单的。 如果是这样,您可以使用unoconv
或pyodconverter
将ODT转换为最终的PDF。
unoconv -f pdf -o final.pdf template.odt
很明显,这需要在Web服务器上安装一个完整的OpenOffice(UNO和Writer)。 显然,不是每个webhoster都会这样做! 哈哈。 即使在任何Debian或Fedora安装程序中都很简单。 执行速度可能不会很好。 但是,这可能是最干净的方法,因为OOopipe理这两种格式的方式比任何PHP类都好。
你没有免费的要求,所以我会build议LiveDocX 。 他们有一个免费的select,但它不符合你的第三方的要求 ,这意味着你将不得不服务器许可证)。
还有一个ZF包:
你有没有考虑过使用像XSL:格式化对象(XSL:FO)? 基本上他们是处理和转换成PDF的XML文档。 做string – 或更好,DOM – replace内应该是非常简单的。 它支持embedded图像,链接,注释等。
这不是PHP,但有一些PHP的包装,以及通过执行等方式使用它不是一个理想的,但它完全照顾模板部分。 有关更多信息: http : //techportal.inviqa.com/2009/12/16/transforming-xml-with-php-and-xsl/
有一个作为Apache项目的实现 – http://xmlgraphics.apache.org/fop/
这不符合你的“没有二进制”的任务,但PDFlib有一个很好的模板系统,使用“块”,这是“PDFlib特定的元数据,你可以使用Acrobat插件”绘制“到PDF中,然后在运行时以编程方式填充每块调用一个函数。 这些块可以是文本(使用简单的文本格式的字体/大小/颜色的伪html),图像(大多数可以显示在PDF中的任何东西)和PDF本身,所以你可以embedded整个其他文件或摘录在一个块的文件。
它可以从一个预先存在的PDF(加载它,插入内容/填充块/等等,输出),或从头开始build立一个新的PDF(严重地以编程方式进行,但可能)来实现。
我已经成功地使用这些块为客户端生成了一个简单的模板系统,他们可以将块embedded到embedded了一小部分元数据的文档中,然后在服务器端进行parsing,生成一个表单以提示数据插入文档生成时的那些块。
fpdf,还有另外一个扩展,我不记得了,它允许你导入模板
你最好的办法是随时生成整个文档,模板使用fpdf或类似的东西编程式地定义。 这样,您的文字就不会被段落或类似的东西所切断,而且您可以根据需要轻松定位图像/其他元素。
PDFlib很好,你的共享主机可能已经有了。 我能够很容易地用PDFlib完成像http://www.housejockey.com/flyers/12/80/MyListing.pdf这样的事情,但是基本的技巧就是join段落文本;…你说的是不好。
我也使用了abcPDF for ASP / ASP.NET,并发现它适合在PDF中插入,但同样不适合在现有文本区域内进行挖掘。
使用强大的模板和占位符是复杂性高于embedded式内容的飞跃。 回streamPDF中的现有文本通常是不可能的。 它需要额外的文档结构,这就是像XMPie和Creo这样的昂贵的可变数据软件包的devise目的。
PHPDOCX开始听起来非常好! 祝你好运。
最近,但是你可以使用OpenSource模板devise器https://github.com/applicius/dhek/releases ,在任何现有的PDF上定义pkaceholders /区域,然后用PHP加载它(因为它是JSON格式),并相应地在原始PDF使用fpdf lib,生成写有dynamic数据的自定义PDF。
尽pipe不是你问的东西,你可以考虑做两个步骤:使用一些PHP模板系统( smarty , dwoo )生成HTML页面,然后使用工具,如Html2Pdf将其转换为PDF。 我正在使用它,结果是好的(页面布局等没有问题)
当然,这取决于你的input文件(你可以使用html而不是PDF / ODT作为源代码)和这些的布局的复杂性。
好的,我正试图帮你解决这个问题。
首先是你的问题的答案。
问 – 我可以忽略一些东西吗?
答 – 不可以。有一个PHP PDF库,可以replace现有PDF中的占位符variables,并生成PDF文件作为最终结果,而不会影响布局
问 – 有没有办法使用PDF表单做到这一点?
A – 是的。 绝对是这样做的tric是通过使用PDF表单
对于这两个答案,你可以使用贾斯汀Koivisto填写PDF表单字段的PHP库。 有关更多详细信息,请访问http://koivi.com/fill-pdf-form-fields/tutorial.php 。 看看那里的其他信息。
感谢Justin Koivisto的工作
PS
对于显示类似pdf格式输出的表格的解决方法,请考虑阅读Oracle Business Intelligence Publisher用户指南 – 创buildPDF模板
我能够通过名为phpdocx(https://github.com/djpate/phpdocx)(不是其他地方引用的)在github上的库来replace.docx中的占位符值。;
然后,我成功地将可移植版本的libreoffice放在我的主机的web服务器上,我使用PHP来调用.docx等格式的命令行转换为pdf。 在飞行中。 我没有在我的主机的networking服务器上的pipe理员权限。 这是我的博客文章:
这部分回答你的问题。 我希望这是有帮助的。
我将添加这个新的答案,因为FDF PHP扩展现在已经死了。
我刚刚按照这些说明 ,最后执行一个Perl脚本,然后执行pdftk命令
我很清楚这远不是一个真正的PHP解决scheme,但是它在任何* nix平台上都可靠且相当容易实现。
那里描述的工具也可以在Debian上find,以防万一你想知道。
这是一点点迟了,但看看PDFTemplate库,它确实是你想要的。 您可以创buildOpen Document文件(odt)并在其中添加占位符。 PDFTemplate库可以填写这些占位符(甚至包含图像)并创build一个PDF文件。
带占位符的ODT文件为PDF
如果您愿意使用外部服务, PDF Otter可以解决您的问题。 有一个免费的计划,您可以注册并立即集成到您的应用程序。
使用PDF Otter的其他专业人士包括在您的应用程序中更less的依赖性和更友好的经验,select您需要填写的字段(我已经使用了手动试错法来获取过去字段的位置,而且耗时)。