【发布时间】:2010-09-30 15:36:54
【问题描述】:
我需要从服务器上的 PDF 文件中提取所有图像。我不想要 PDF 页面,只想要原始大小和分辨率的图像。
如何使用 Perl、PHP 或任何其他基于 UNIX 的应用程序(我会使用 PHP 的 exec 函数调用)来做到这一点?
【问题讨论】:
-
您如何知道每张图片在页面上的位置?据我所知,PDF 文件不会记录此信息。
我需要从服务器上的 PDF 文件中提取所有图像。我不想要 PDF 页面,只想要原始大小和分辨率的图像。
如何使用 Perl、PHP 或任何其他基于 UNIX 的应用程序(我会使用 PHP 的 exec 函数调用)来做到这一点?
【问题讨论】:
pdfimages 很好,因为它不会重新编码,而只会提取 jpeg。但是有个bug:
pdfimages 来自包“poppler-utils”或来自更大的“xpdf-utils”。至少在 Ubuntu 中已经预装了“poppler-utils”。 poppler-utils 10.0.3 (Ubuntu 9.04 Jaunty) 中的 pdfimages 仍然没有对提取“.jpg”的选项“-j”做出反应。它总是提取“.ppm”。
作为一种解决方法,您可以将“poppler-utils”替换为“xpdf-utils”: $ sudo apt-get install xpdf-utils
致以诚挚的问候,
+++奥利弗
【讨论】:
-j 开关
pdfimages 就是这样做的。它是 poppler-utils 和 xpdf-utils 软件包的一部分。
来自手册页:
Pdfimages 将可移植文档格式 (PDF) 文件中的图像保存为可移植像素图 (PPM)、可移植位图 (PBM) 或 JPEG 文件。
Pdfimages 读取 PDF 文件,扫描一页或多页 PDF 文件,并为每个图像写入一个 PPM、PBM 或 JPEG 文件 image-root-nnn.xxx,其中 nnn 是图像编号,xxx 是图像类型(.ppm、.pbm、.jpg)。
注意:pdfimages 从 PDF 文件中提取原始图像数据,而不执行任何额外的转换。由 PDF 内容流完成的任何旋转、剪切、颜色反转等都将被忽略。
【讨论】:
关于 Perl,你检查过CPAN吗?
【讨论】: