试图替换PDF中的图形资源 - PDFBox 2.0.8

时间:2017-11-09 12:31:42

标签: pdf pdfbox

我正在尝试操纵某些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");
}

0 个答案:

没有答案