嗨,我知道有几个适用于php的PDF生成器(如fpdf、dompdf等)。
我想了解的是关于解析器的问题。
由于某些原因,我需要提取位于pdf表格中的某些信息并将其转换为数组。
有什么建议吗?
嗨,我知道有几个适用于php的PDF生成器(如fpdf、dompdf等)。
我想了解的是关于解析器的问题。
由于某些原因,我需要提取位于pdf表格中的某些信息并将其转换为数组。
有什么建议吗?
我曾经为类似的需求写过一个程序,可以说这是一个相当复杂的任务。 PDF规范非常庞大且难以操作。它有多种存储文本的方法。更关键的是,每个PDF生成器的工作方式都不同。因此,虽然像TFPDF或DOMPDF之类的工具可以轻松地生成PDF(从机器角度来看),但Acrobat却会生成一些非常麻烦的文档。
原因在于其写入文本的方式。大多数基于DOM的渲染器(我使用过的)将整行文本作为一个字符串写入并进行定位(这非常容易阅读)。Acrobat则试图更高效(实际上确实如此),只写入一个或几个字符,并对其进行独立定位。虽然这样做真的简化了渲染,但阅读起来却更加困难。
好消息是,PDF格式本身非常简单。您有“对象”遵循常规语法。然后您可以将它们链接在一起以生成内容。规范对文件格式的描述做得很好。但是现实世界中的阅读需要一点脑力...
如果您要自己编写代码,这里有一些我曾经吃过苦头得出的有用建议:
65
可能不是A
...您需要找到一个映射对象,并根据其中包含的字符来推断其作用。尽管这样做非常高效,因为如果一个字符在该字体的文档中未出现,则不会包含它(如果您试图以编程方式编辑PDF,这将使生活变得更加困难)...strlen
。使用mb_strlen($string, '8bit')
,因为它将补偿不同字符集(并允许其他字符集中的潜在无效字符)。否则,祝你好运...
我使用PDFBox (http://pdfbox.apache.org/) 进行操作。这个软件是基于Java并且跨平台的。它运行快速可靠。你可以通过exec或shell execute或通过PHP/Java-Bridge (http://php-java-bridge.sourceforge.net/)来使用它。
Zend_Pdf
组件是一个PDF(可移植文档格式)操作处理引擎。它可以加载、创建、修改和保存文件,因此可以帮助任何PHP应用程序通过修改现有文档或从头开始生成新文档来动态创建PDF文档。
这是PHP PDF解析器,有两种版本:
可以看一下GhostScript或者ITextSharp,这两个工具都有多个跨平台版本。
实际上,PDF 中可能并没有表格,因为 PDF 会丢失这种信息...