嗨,我知道几个PDF Generators for php(fpdf,dompdf等) 我想知道的是解析器。
由于我无法控制的原因,我需要的某些信息仅在pdf中的表格中 我需要提取该表并将其转换为数组。
有什么建议吗?
答案 0 :(得分:29)
我之前写了一篇(针对类似的需求),我可以这样说:玩得开心。这是一项非常复杂的任务。 PDF specification很大且很笨重。有几种方法可以在其中存储文本。而且每个PDF生成器的工作方式都不同。因此,虽然像TFPDF或DOMPDF这样的东西创造了非常容易阅读的PDF(从机器的角度来看),Acrobat制作了一些非常地狱般的文档。
原因是它如何写文本。大多数基于DOM的渲染器 - 我已经使用过 - 将整行写成一个字符串,并将其定位一次(这非常容易阅读)。 Acrobat通过一次只写一个或几个字符并独立定位它们来尝试提高效率(并且确实如此)。虽然这真的简化了渲染,但它使阅读变得更加困难。
这方面的好处是,PDF格式本身非常简单。您有“对象”遵循常规语法。然后,您可以将它们链接在一起以生成内容。该规范在描述文件格式方面做得很好。但现实世界的阅读需要一点脑力......
一些有用的建议,如果你要自己写,我必须学习很多方法:
65
字符可能不是A
...您需要找到一个地图对象,并根据其中的字符推断出它正在做什么。并且它是高效的,因为如果字符没有出现在该字体的文档中,它不包括它(如果您尝试以编程方式编辑PDF,这将使生活变得困难)...... strlen
。使用mb_strlen($string, '8bit')
,因为它将补偿不同的字符集(并允许其他字符集中可能存在无效字符)。否则,祝你好运......
答案 1 :(得分:17)
我使用PDFBox(http://pdfbox.apache.org/)。该软件基于Java并且与平台无关。它工作快速可靠。您可以通过exec或shell执行或通过PHP / Java-Bridge(http://php-java-bridge.sourceforge.net/)
来使用它答案 2 :(得分:3)
你看过xPDF了吗?那里有一个名为pdftotext的程序可以进行转换。您可以从PHP调用它,然后阅读PDF的文本版本。您需要能够从php运行exec()或system(),因此这可能不适用于所有托管解决方案。
此外,PHP site上有一些将PDF转换为文本的示例,尽管它非常粗糙。您可能还想尝试其中一些示例。在PHP page上,在phpt dot org上搜索luc。
答案 3 :(得分:1)
看看GhostScript或ITextSharp,两者都有各种跨平台版本。
答案 4 :(得分:1)
Zend_Pdf是Zend Framework的一部分。他们的手册说明:
Zend_Pdf
组件是PDF (便携式文件格式) 操纵引擎。它可以加载, 创建,修改和保存文档。 因此它可以帮助任何PHP应用程序 通过动态创建PDF文档 修改现有文件或 从头开始创造新的。
答案 5 :(得分:0)
PDF可能实际上不是PDF中的表格,因为PDF会丢失这类信息......
答案 6 :(得分:0)
This 是PHP PDF解析器,它有两种版本: