用php读取pdf文件
Posted
技术标签:
【中文标题】用php读取pdf文件【英文标题】:Read pdf files with php 【发布时间】:2010-11-03 12:27:26 【问题描述】:我有一个大型 PDF 文件,它是建筑物的平面图。它包含所有办公家具的图层,包括座位位置的文本框。
我的目标是用 php 读取这个文件,在文档中搜索文本层,在文件中获取它们的内容和坐标。这样我就可以绘制出座位位置 -> x/y 坐标。
有没有办法通过 PHP 做到这一点? (如果有必要,甚至是 Ruby 或 Python)
【问题讨论】:
标记代码中是否包含“坐标”?如果没有,您可以随意搜索。 PHP 无法定位 pdf 文件的像素坐标。尝试更详细地解释您的“问题”,也许通过使用图片等方式。 您好,您的问题找到答案了吗?因为我遇到了类似的问题,但找不到解决方案……如果你找到了,请告诉我你是如何从 pdf 文件中获取图像坐标的?.. @PigalevPavel 对不起,我没有 :( 【参考方案1】:查看 FPDF(使用 FPDI):
http://www.fpdf.org/
http://www.setasign.de/products/pdf-php-solutions/fpdi/
这些将让您打开一个 pdf 并在 PHP 中添加内容。我猜您也可以使用它们的功能在现有内容中搜索您需要的值。
另一个可能的库是 TCPDF:https://tcpdf.org/
更新以添加更现代的库:PDF Parser
【讨论】:
在将 pdf 解析为 php 方面,fpdf 不足,而 pdfparser pdfparser.org/documentation 具有简洁直观的编程界面 嗨@Nate!我将 pdf 解析器库添加到答案中。感谢您对 6 岁的答案投反对票! 这就是为什么“主要基于意见”的问题首先在这里超出范围。此外,我认为对一个 6 岁的问题发表意见并没有什么不好,但我同意在这种情况下,否决票是愚蠢的。所以我支持你:) 在寻找自己的答案时,我发现了这些信息,当时我并没有在寻找信息的年龄。这个网站是一个很好的资源,但前提是信息是真实的。 fpdf 常见问题解答指出,“18。我想用 PHP 制作一个搜索引擎并索引 PDF 文件。我可以用 FPDF 做吗?不能。”虽然 OP 不是在寻找搜索引擎,但这个问答展示了 fpdf 无法解析 pdf 中的文本元素,而这正是 OP 和我自己正在寻找的。您提供的解决方案不是原始问题的解决方案,现在看来,无知正在蔓延。本网站上的信息保持准确至关重要,否则它是另一个“雅虎答案”。【参考方案2】:有一个 php 库 (pdfparser) 可以完全满足您的需求。
项目网站
http://www.pdfparser.org/
github
https://github.com/smalot/pdfparser
演示页面/api
http://www.pdfparser.org/demo
在您的项目中包含 pdfparser 后,您可以从 mypdf.pdf
获取所有文本,如下所示:
<?php
$parser = new \installpath\PdfParser\Parser();
$pdf = $parser->parseFile('mypdf.pdf');
$text = $pdf->getText();
echo $text;//all text from mypdf.pdf
?>
您可以从 pdf 中获取元数据以及获取 pdf 对象(例如图像)。
【讨论】:
我试过这个库。这个库不解析许多 PDF 文件,否则它可以工作【参考方案3】:不完全是 php,但您可以从 php 执行一个程序,将 pdf 转换为临时 html 文件,然后使用 php 解析生成的文件。我为我的一个项目做了类似的事情,这是我使用的程序:
PdfToHtml
生成的 HTML 将文本元素包装在具有绝对位置坐标的
标记中。看起来这正是你想要做的。【讨论】:
嘿,你能发布一个示例代码如何实现你的结果。我找不到合适的文档。会很棒的。【参考方案4】:您的初始请求是“我有一个大型 PDF 文件,它是建筑物的平面图。”
我不敢告诉你,这可能比你想象的要难。
原因每个人用来解析 pdf 的最后一个已知库是 smalot,并且已知这个库会遇到大文件问题。
在这里,寻找一个真正的 php lib 来解析 pdf,没有任何需要 php 配置来禁用内存限制的内存峰值,就像许多“开发人员”所做的那样(我认为这确实是不可取的)。
有关 smalot 性能的更多详细信息,请参阅此帖子:https://github.com/smalot/pdfparser/issues/163
【讨论】:
【参考方案5】:您可能还想试试这个应用程序http://pdfbox.apache.org/。可以在https://www.jinises.com
找到一个工作示例【讨论】:
抱歉,这是 Java 而不是 PHP :-/以上是关于用php读取pdf文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MySQL 数据库中插入 pdf 文件,然后在 php 中读取?
Android 中读取pdf格式文件 (大神们,你们怎么看……)