Java 从PDF文件中删除矩形

Java 从PDF文件中删除矩形,java,pdf,Java,Pdf,我想要一个从PDF文件中删除所有矩形的程序。其中一个用例是打开给定的PDF文件,查看矩形后面是否有隐藏的信息。PDF文件的其余部分应保持原样 哪个PDF库适合此任务?在Java中,我希望代码如下所示: PdfDocument doc = PdfDocument.load(new File("original.pdf")); PdfDocument unblackened = doc.transform(new CopyingPdfVisitor() { public void visitRe

我想要一个从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文档,我的自定义代码将省去所有黑色矩形。

Itext PDF库有修改PDF内容的方法

*ITEXT CONTENTPARSER示例*可能会让您有所了解。“qname”参数(限定名)可用于检测矩形元素

其他选项,如果要获取文档上的文本,请使用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();
}
public void parsePdf(String pdf,String txt)抛出IOException{
PdfReader reader=新PdfReader(pdf);
PdfReaderContentParser=新的PdfReaderContentParser(读取器);
PrintWriter out=新的PrintWriter(新文件输出流(txt));
文本抽取策略;

对于(int i=1;i Itext)来说,还没有按照矢量图形实现所有可能的功能。在这方面,您可能会对PDFBox更满意。