PDFBox 不保留页面子类

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

这看起来很奇怪。我正在使用 PDFBox 3。我正在尝试使用页面的子类,以便我可以向其添加布局功能。

当我将子类的页面添加到文档并尝试将其取回时,我取回的是 PDPage 实例,而不是我的子类实例。

这是一个简单的子类:

package pdfBox;

import org.apache.pdfbox.pdmodel.PDPage;

public class MyPage extends PDPage {
}

这是一段测试代码:

package pdfBox;

import org.apache.pdfbox.pdmodel.PDDocument;

public class PageTest {
  public static void main(String[] args) {
    PDDocument doc = new PDDocument();
    doc.addPage(new MyPage());
    MyPage myPage = (MyPage)doc.getPage(0);
  }
}

当我尝试投射页面时遇到此异常:

java.lang.ClassCastException: class org.apache.pdfbox.pdmodel.PDPage cannot be cast to class pdfBox.MyPage

有什么想法为什么 PDFBox 不保留子类吗?

java pdfbox
1个回答
2
投票

PDPage 对象不会被缓存。每次都会从 COSDictionary 结构中创建一个新的。这是你的对象,所以你自己保管吧。

© www.soinside.com 2019 - 2024. All rights reserved.