我有一个大型PDF文件,它是建筑物的楼层地图。它有所有办公家具的层,包括座位的文本框。
我的目标是使用PHP读取此文件,在文档中搜索文本图层,获取文件中的内容和坐标。通过这种方式,我可以绘制座位位置 - > x / y坐标。
有没有办法通过PHP做到这一点? (甚至Ruby或Python,如果这是必要的)
答案 0 :(得分:31)
查看FPDF(使用FPDI):
http://www.setasign.de/products/pdf-php-solutions/fpdi/
这些将允许您打开pdf并在PHP中添加内容。我猜你也可以使用他们的功能在现有内容中搜索你需要的值。
另一个可能的库是TCPDF:http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
更新以添加更现代的库:PDF Parser
答案 1 :(得分:24)
有一个php库(pdfparser)可以完全满足您的需求。
项目网站
<强> github上
https://github.com/smalot/pdfparser
演示页/ api
在您的项目中包含pdfparser后,您可以像mypdf.pdf
那样获取所有文字:
<?php
$parser = new \installpath\PdfParser\Parser();
$pdf = $parser->parseFile('mypdf.pdf');
$text = $pdf->getText();
echo $text;//all text from mypdf.pdf
?>
Simular你可以从pdf获取元数据以及获取pdf对象(例如图像)。
答案 2 :(得分:0)
嗯...不完全是php,但你可以从php调用一个程序将pdf转换为临时的html文件,然后用php解析生成的文件。我为我的一个项目做了类似的事情,这是我使用的程序:
该计划的一个很酷的地方在于它将吐出&lt;中的文本元素。 div>带绝对位置坐标的标签。看起来这正是你想要做的。
答案 3 :(得分:0)
您可能还想尝试此应用http://pdfbox.apache.org/。可以在https://www.jinises.com
找到一个工作示例答案 4 :(得分:0)
您的初始请求是&#34;我有一个大型PDF文件,它是建筑物的楼层地图。 &#34;
我害怕告诉你这可能比你想象的要难。
原因每个人用来解析pdf的最后一个已知的lib很小,而且这个已知会遇到有关大文件的问题。
在这里,Lookig是一个真正的php lib来解析pdf,没有任何内存峰值需要php配置来禁用内存限制,因为很多&#34;开发人员&#34; (我猜这真的不可取)。
有关smalot性能的更多详细信息,请参阅此帖子:https://github.com/smalot/pdfparser/issues/163