[英]extract images from PDF with PHP
问题是客户想要上传带有图像的pdf,作为一次批量处理多个图像的方式。
我已经环顾四周,开箱即用PHP无法阅读PDF文件。
我有什么选择?
我已经知道主机没有安装imageMagick
或任何pdf库, exec
功能被禁用。 我猜,这基本上让我无需工作。
有没有人知道是否有一个可以做到这一点的在线服务,有各种各样的api?
谢谢你
AFAIK,没有PHP模块可以做到。 有一个命令行工具, pdfimages ( xpdf的一部分)。 作为参考,这是如何工作的:
pdfimages -j source.pdf image
这将从source.pdf中提取所有图像为image-000.jpg,image-001.jpg等。请注意,输出格式始终为Jpeg。
可能的选择
作为命令行工具,您需要exec
(或system
, passthru
,PHP内置的任何命令执行函数)。 由于您的环境没有,我看到四个选项:
pdfimages
的源代码作为模型, pdfimages
pdfimages
通过在您控制的远程主机上运行它来完成繁重的工作 关于#3,滚动你自己,我不认为滚动你自己,解决一个非常狭窄的要求定义,将是太困难了。 我似乎记得PDF中的图像边界定义得很好:只需将文件读入边界,切割到边界的末尾,base64_decode,然后写入文件 - 重复。 但是,这可能太多了......
如果滚动你自己太复杂了,那么选项#4就像Joel Spolsky描述的使用复杂的Excel对象一样 (参见大胆标题下的编号列表“让Office为你做繁重的工作”)。
exec
和curl
pdfimages
示例交换可能如下所示:
GET http://www.cheaphost.com/pdfimages.php?extract=http://www.limitedhost.com/path/to/uploaded.pdf
Content-type: text/html
<html>
<body>
<ul>
<li>http://www.cheaphost.com/pdfimages.php?retrieve=ab9895v/image-000.jpg</li>
<li>http://www.cheaphost.com/pdfimages.php?retrieve=ab9895v/image-001.jpg</li>
</ul>
</body>
</html>
因此,您的单个pdfimages.php脚本(在具有exec
功能的主机上运行)可以提取图像,并允许您访问提取的图像。 提取时,它会读取您告诉它的PDF,在其上运行pdfimages,并返回一个要调用的URL列表以检索提取的图像。 检索时,它只会让您回到直线图像。
您需要处理清理,或许要做的事情是在检索后删除图像。 您还需要处理安全性 - 不知道这些图像中的内容,但内容可能需要包含在SSL中并采取其他预防措施。
您可以使用pdfimages并以这种方式安装它:
apt install poppler-utils
然后以这种方式使用它将所有图像作为PNG文件:
pdfimages -j mypdf.pdf image -png
图像将放在image-000.png,image-001.png等下的同一文件夹中。
有许多选项可供选择,包括一些可以更改输出格式的选项, 这里有更多信息。
我希望这有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.