我需要使用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 减小分割文件的大小。
我尝试过,它对我有用。所以这一定是你的设置。确保您使用以下内容:
使用PdfBox版本2.0.X(我用的是2.0.30)
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();
}