如何使用java中的pdfbox从pdf页面中删除未使用的图形

问题描述 投票:0回答:1

我需要使用java中的pdfbox从pdf文档的页面中删除未使用的图形/图像。 我遇到了这个堆栈溢出链接:清理 PDF 页面资源中未使用的图像。这个链接准确地描述了我正在寻找的内容。 @Tilman Hausherr 和 @SakeviYokoyama 就这个问题交换了意见。

我下载了@SakeviYokoyama 开发的课程,但我遇到了问题 PdfImageStreamEngine 类,用于 PageExtractor 类的 findImageNames 方法。

PdfImageStreamEngine 类的定义可以在 Gihub 中找到,网址如下: https://gist.github.com/SakeviYokoyama/edeaa405bea30e3c94aaba8b073aaf2f

问题是 PdfImageStreamEngine 类的定义不在 github 存储库中;但是,此类的定义位于 Stack Overflow 问题中。我使用了 Stack Overflow 中找到的类的定义,但是当我尝试在 Eclipse 中使用该代码时出现错误。

Eclipse 抱怨以下内容:

“默认构造函数未定义隐式超级构造函数 OperatorProcessor()。必须定义显式构造函数”

我正在尝试使用 pdfbox 减小分割文件的大小。

java pdf pdfbox
1个回答
0
投票

我尝试过,它对我有用。所以这一定是你的设置。确保您使用以下内容:

  • 使用PdfBox版本2.0.X(我用的是2.0.30)

  • 当您的 Java 版本配置错误时,
  • eclipse 会出现此错误。转到项目 - 首选项 - Java - 编译器并确保安装了正确的 jdk/jre(或转到窗口 - 首选项 - Java - 安装的 JRE)。对我来说,它可以与 Java 8 / 11 / 17 作为运行时

  • 如果您正在做一些特殊的事情,请在此处添加代码。对我来说,以下内容有效(请注意,这只是基本的示例代码 - 所以缺少很多东西):

       PDDocument document = null;
          try {
              document = PDDocument.load(yourfile);
              fis.close();
    
              PageExtractor extractor = new PageExtractor();
              PDDocument page = extractor.extractPage(document, 1);
    
              System.out.println(page.getNumberOfPages());
    
              document.close();
          } 
          catch (IOException ex) {
             ex.printStackTrace();
          }
    
© www.soinside.com 2019 - 2024. All rights reserved.