我正在寻找一些(最好是免费的)库,它可以帮助从指定的矩形区域中提取 PDF 文本,该矩形区域由左、上、宽和高参数指定。它应该可以在 linux 系统上与 PHP 一起使用。您能否建议这样一个库和一个工作示例?
1 回答
命令行
PHP 也可以使用外部命令行工具。因此,如果这是您的选择...
如果您使用命令行pdftotext
——但只有 Poppler 版本,而不是 XPDF 版本!-- 你有这些可选的 CLI 参数:
-x : 裁剪区域左上角的 x 坐标 -y : 裁剪区域左上角的 y 坐标 -W:裁剪区域的宽度(以像素为单位)(默认为 0) -H:裁剪区域的高度(以像素为单位)
一个工作示例:
首先,让我们使用 Ghostscript 从 Bash 手册页创建一个 PDF:
man -t bash | gs -o man-bash.pdf -sDEVICE=pdfwrite -
接下来,让我们从中提取一些文本。使用宽度 200、高度 100 和左上角(200,200)
{你在这里从左上角计算为定位在(0,0)
}:
kp@mbp:~$ pdftotext -f 1 -l 1 -x 200 -y 200 -W 200 -H 100 man-bash.pdf - Shell 和 Ut 的一致实现 标准 1003.1)。Bash 可以配置为 POS 描述中记录的演员外壳选项 外壳被调用。另外,bash 解释 存在选项,然后从 s 读取命令
请注意我-f
对(for first page) 和-l
(for last page)的用法。如果您不使用它,将为多页 PDF 的每一页打印相应的文本区域。pdftotext
与此屏幕截图比较:
看起来它按预期工作,不是吗?
图书馆
波普勒
Poppler 也可以用作库。但是我对这种方法没有任何经验(对 PHP 也没有太多经验)。
TET
如果您找不到满足您要求的免费库,请查看从 PDF 中提取文本的最佳工具:TET,文本提取工具包。TET 是PDFlib.com产品系列的一部分。
PDFlib.com 是 Thomas Merz 的公司。如果您不认识他的名字:Thomas Merz 是“PostScript and PDF Bible”的作者之一。
TET 的第一个化身是图书馆。那个可能可以做任何你想做的事情,包括页面上每个元素的位置信息。
pdflib.com 还提供了该技术的另一个化身,即Acrobat 的 TET 插件。第三个化身是PDFlib TET iFilter。这是适用于 Windows 桌面的独立工具。两者都是免费的(如啤酒),可用于私人、非商业目的。
TET 比 Adobe 自己的文本提取要好得多。它为我提取了其他工具(包括 Adobe 的)只吐出垃圾的文本。
试试看。