我正在尝试操纵某些PDF文件中的图像资源;工作流程是:提取图像资源 - >处理每个 - >用新的替换旧的。
简单的任务真的,我有提取和替换的工作代码,但是当我替换时,新文件大小几乎是原始文件的两倍。
要替换图像,我使用PDResources.put(COSName, PDXObject)
。什么会导致结果文档中的大小增加?即使我完全省略了处理每个图像资源的工作流程中的中间步骤,也会发生这种情况。
public static void PDFBoxReplaceImages() throws Exception {
PDDocument document = PDDocument.load(new File("C:\\Users\\Markus\\workspace\\pdf-test\\book.pdf"));
PDPageTree list = document.getPages();
for (PDPage page : list) {
PDResources pdResources = page.getResources();
for (COSName c : pdResources.getXObjectNames()) {
PDXObject o = pdResources.getXObject(c);
if (o instanceof PDImageXObject) {
counter++;
String path = "C:\\Users\\Markus\\workspace\\pdf-test\\images\\"+counter+".png";
PDImageXObject newImg =
PDImageXObject.createFromFile(path, document);
pdResources.put(c, newImg);
}
}
}
document.save("C:\\Users\\Markus\\workspace\\pdf-test\\book.pdf");
}