AFAIK,没有PHP模块可以做到.有一个命令行工具,
pdfimages(
xpdf的一部分).作为参考,这是如何工作的:
pdfimages -j source.pdf image
这将从source.pdf中提取所有图像为image-000.jpg,image-001.jpg等.请注意,输出格式始终为Jpeg.
可能的选择
作为命令行工具,您需要exec(或系统,passthru,PHP内置的任何命令执行函数).由于您的环境没有,我看到四个选项:
>请求为您打开exec(您的托管服务提供商可以限制您执行单个命令的操作)
>更改设计 – ZIP上传怎么样?
>使用pdfimages的源代码作为模型,自行滚动
>让pdfimages通过在您控制的远程主机上运行来完成繁重的工作
关于#3,滚动你自己,我不认为滚动你自己,解决一个非常狭窄的要求定义,将太困难.我似乎记得PDF中的图像边界定义得很好:只需将文件读入边界,切割到边界的末尾,base64_decode,然后写入文件 – 重复.但是,这可能太多了……
>找到一个便宜的托管环境(例如亚马逊EC2)让你执行和卷曲
>安装pdfimages
>编写一个PHP脚本,将URL带到PDF,curl打开PDF,将其写入磁盘,将其传递给pdfimages,然后将URL返回到生成的图像.
示例交换可能如下所示:
GET http://www.cheaphost.com/pdfimages.php?extract=http://www.limitedhost.com/path/to/uploaded.pdf
Content-type: text/html
- http://www.cheaphost.com/pdfimages.php?retrieve=ab9895v/image-000.jpg
- http://www.cheaphost.com/pdfimages.php?retrieve=ab9895v/image-001.jpg
因此,您的单个pdfimages.php脚本(在具有exec功能的主机上运行)可以提取图像,并允许您访问提取的图像.提取时,它会读取您告诉它的PDF,在其上运行pdfimages,并返回一个要调用的URL列表以检索提取的图像.检索时,它只会让您回到直线图像.
您需要处理清理,或许要做的事情是在检索后删除图像.您还需要处理安全性 – 不知道这些图像中的内容,但内容可能需要包含在SSL中并采取其他预防措施.