从PDF文件中删除矩形

时间:2013-10-12 15:38:38

标签: java pdf

我想要一个程序从PDF文件中删除所有矩形。一个用例是取消黑白给定的PDF文件以查看矩形后面是否有任何隐藏信息。 PDF文件的其余部分应保持原样。

哪个PDF库适合此任务?在Java中,我希望代码看起来像这样:

PdfDocument doc = PdfDocument.load(new File("original.pdf"));
PdfDocument unblackened = doc.transform(new CopyingPdfVisitor() {
  public void visitRectangle(PdfRect rect) {
    if (rect.getFillColor().getBrightness() >= 0.1) {
      super.visitRectangle(rect);
    }
  }
});
unblackened.save(new File("unblackened.pdf"));

CopyingPdfVisitor会完全按照原样复制PDF文档,而我的自定义代码会遗漏所有黑色矩形。

1 个答案:

答案 0 :(得分:0)

Itext pdf库有办法修改pdf内容。

* ITEXT CONTENTPARSER示例*可能会给你任何想法。 "的QName"参数(限定名称)可用于检测矩形元素。

http://itextpdf.com/book/chapter.php?id=15

其他选项,如果要获取文档上的文本,请使用PdfReaderContentParser提取文本内容

public void parsePdf(String pdf, String txt) throws IOException {
    PdfReader reader = new PdfReader(pdf);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);
    PrintWriter out = new PrintWriter(new FileOutputStream(txt));
    TextExtractionStrategy strategy;
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        strategy = parser.processContent(i, new SimpleTextExtractionStrategy());
        out.println(strategy.getResultantText());
    }
    out.flush();
    out.close();
    reader.close();
}

示例http://itextpdf.com/examples/iia.php?id=277