如何使用PDFBox从PDF中删除特定图像

时间:2017-12-11 17:13:47

标签: java pdf pdfbox

我需要根据元数据从PDF文件中删除特定图像。可悲的是。我在Internet上找到的所有例子都使用了丢弃的方法。

我写的是这样的:

try (PDDocument doc = PDDocument.load(new ByteArrayInputStream(pdf))) {
doc.getPages().forEach(page ->
{
    PDResources resources = page.getResources();
    List<COSName> itemsToRemove = new ArrayList<>();

    resources.getXObjectNames().forEach(propertyName -> {
        if(!resources.isImageXObject(propertyName)) {
            return;
        }
        PDXObject pdxObject = resources.getXObject(propertyName);
        PDImageXObject pdImageXObject = (PDImageXObject)pdxObject;
        PDMetadata metadata = pdImageXObject.getMetadata();
        if(checkMetadata(metadata)){
            // What should I use here?
            page.getCOSObject().removeItem(propertyName);
        }
    });
    // Should I use page.setResources(resources); ?
 });
doc.save(baos);
} catch (Exception e) {
//Code here

}

1 个答案:

答案 0 :(得分:2)

它的工作方式与示例RemoveAllText.java相同,只是使用不同的标记。

使用此示例中的代码,只需使用“Do”而不是“Tj”。

当然,如果你需要加载元数据等,你应该枚举并检查图像投掷页面资源(如我的例子)