这看起来很奇怪。我正在使用 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 不保留子类吗?
PDPage 对象不会被缓存。每次都会从 COSDictionary 结构中创建一个新的。这是你的对象,所以你自己保管吧。