【问题标题】:How to detect a large image in PDF and extract it as a JPEG or any format?如何检测 PDF 中的大图像并将其提取为 JPEG 或任何格式?
【发布时间】:2013-05-28 15:46:13
【问题描述】:

我正在创建一个从 PDF 文件创建杂志的项目,但是每个上传的杂志都应该有一个带有封面照片的重击,我想从 PDF 中提取这个图像作为 JPEG 以便将其设置为封面照片。

有什么方法可以使用 Ghostscript 或任何其他命令行工具来实现吗?

【问题讨论】:

    标签: java android pdf ghostscript


    【解决方案1】:

    您的意思是要将 PDF 文件的第一页呈现为图像格式吗?如果是这样,那么是的,Ghostscript 可以做到这一点(ImageMagick 也使用 Ghostscript、MuPDF 和可能还有许多其他实用程序)。

    如果你的意思是第一页包含一张图片,而你确实想提取它,那么这是一项更难的工作,你需要一个 PDF 工具包来完成它。 Ghostscript 可以做到这一点,但它可能有点矫枉过正,你可能会发现 MuPDF 更方便。我有一个模糊的记忆,pdftk可以提取图像,但我可能弄错了。如果这是您想要的,在 Google 上进行快速搜索可能会有所帮助。

    【讨论】:

      【解决方案2】:

      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.jpegprefix-0001.jpegsubdir/。如果可能,-j 参数将尝试获取 JPEG 图像。直接 JPEG 提取可能会失败,在这种情况下,提取的图像将保存为 PPM 或 PNM(注意,它们很大,因为它们是未压缩的)。如果需要,这些可以通过 ImageMagick 转换为 JPEG:

      convert subdir/prefix-0022.ppm subdir/prefix-0022.jpeg
      

      【讨论】:

        【解决方案3】:

        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 的概念。这只是我所知道的。 :-)"

        【讨论】:

          猜你喜欢
          • 2020-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-09
          • 1970-01-01
          • 2019-09-25
          • 2017-09-05
          • 2021-09-01
          相关资源
          最近更新 更多