【发布时间】:2015-11-28 01:34:34
【问题描述】:
我一直在使用 PDFBox 1.8 来处理 pdf。现在我打算迁移到 PDFBox 2.0-RC-2。我在迁移时遇到了一些问题。
使用 PDFBox 1.8,我曾经使用以下方法从 PDPage 获取令牌:
PDStream contents = page.getContents();
PDFStreamParser parser = new PDFStreamParser(contents.getStream());
parser.parse();
List<Object> tokens = parser.getTokens();
但是,page.getContents() 在 PDFBox 2 中返回一个 InputStream。如何获取 PDStream?我应该使用page.getContentStreams()(返回Iterable)并遍历它吗?此外,构造函数new PDFStreamParser(COSStream) 似乎已被弃用。
我遇到的另一个问题是图像替换。我正在使用 replaceWithStream
PDResources resources = page.getResources();
Iterable<COSName> xObjectNames = resources.getXObjectNames();
if (null != xObjectNames) {
for(COSName xObjectName : xObjectNames){
PDXObject object = resources.getXObject(xObjectName);
if (object instanceof PDImageXObject) {
PDImageXObject img1 = (PDImageXObject) object;
PDImageXObject img2 = ....
img1.getCOSStream().replaceWithStream(
img2.getCOSStream());
}
}
}
replaceWithStream 方法在 PDFBox 1.8 中已弃用,因此在 PDFBox 2.0 中已完全删除。用img2替换img1的另一种方法是什么?
【问题讨论】: