【发布时间】:2013-05-28 15:46:13
【问题描述】:
我正在创建一个从 PDF 文件创建杂志的项目,但是每个上传的杂志都应该有一个带有封面照片的重击,我想从 PDF 中提取这个图像作为 JPEG 以便将其设置为封面照片。
有什么方法可以使用 Ghostscript 或任何其他命令行工具来实现吗?
【问题讨论】:
标签: java android pdf ghostscript
我正在创建一个从 PDF 文件创建杂志的项目,但是每个上传的杂志都应该有一个带有封面照片的重击,我想从 PDF 中提取这个图像作为 JPEG 以便将其设置为封面照片。
有什么方法可以使用 Ghostscript 或任何其他命令行工具来实现吗?
【问题讨论】:
标签: java android pdf ghostscript
您的意思是要将 PDF 文件的第一页呈现为图像格式吗?如果是这样,那么是的,Ghostscript 可以做到这一点(ImageMagick 也使用 Ghostscript、MuPDF 和可能还有许多其他实用程序)。
如果你的意思是第一页包含一张图片,而你确实想提取它,那么这是一项更难的工作,你需要一个 PDF 工具包来完成它。 Ghostscript 可以做到这一点,但它可能有点矫枉过正,你可能会发现 MuPDF 更方便。我有一个模糊的记忆,pdftk可以提取图像,但我可能弄错了。如果这是您想要的,在 Google 上进行快速搜索可能会有所帮助。
【讨论】:
Poppler/XPDF 自带pdfimages:
Pdfimages 将可移植文档格式 (PDF) 文件中的图像保存为可移植像素图 (PPM)、可移植位图 (PBM) 或 JPEG 文件。 pdfimages 读取 PDF 文件 PDF-file,扫描一页或多页,并为每个图像写入一个 PPM、PBM 或 JPEG 文件,image-root-nnn.xxx,其中 nnn 是图像编号,xxx 是图像类型( .ppm、.pbm、.jpg)。
从 PDF 的第 1 页提取所有图像的命令行如下:
pdfimages -j -f 1 -l 1 some.pdf subdir/prefix
图像将保存到名为prefix-0000.jpeg、prefix-0001.jpeg 的subdir/。如果可能,-j 参数将尝试获取 JPEG 图像。直接 JPEG 提取可能会失败,在这种情况下,提取的图像将保存为 PPM 或 PNM(注意,它们很大,因为它们是未压缩的)。如果需要,这些可以通过 ImageMagick 转换为 JPEG:
convert subdir/prefix-0022.ppm subdir/prefix-0022.jpeg
【讨论】:
ABCpdf 将允许您从 PDF 中提取图像。这是一个两阶段的操作。首先,您需要确定图像在文档中出现的位置。然后你需要导出它们。
你需要这样的东西......
using (Doc theDoc = new Doc()) {
theDoc.Read(theSrc);
ImageOperation op = new ImageOperation(theDoc);
op.PageContents.AddPages();
ICollection<ImageProperties> images = op.GetImageProperties();
foreach (ImageProperties pl in images) {
foreach (ImageRendition plc in pl.Renditions) {
... if plc is a good match
plc.PixMap.GetBitmap().Save(@"c:\output.jpg");
}
}
}
我在 ABCpdf .NET 软件组件上工作,因此我的回复可能包含基于 ABCpdf 的概念。这只是我所知道的。 :-)"
【讨论】: