使用欠内容的iText水印检测器

使用欠内容的iText水印检测器,itext,watermark,Itext,Watermark,我正在与iText合作,尝试创建一个非常基本的视觉水印检测器 程序的第一部分将水印图像添加到pdf的“UnderContent”中 然后,我想看看是否可以在该位置检测到水印图像,或者检查pdf背景是否包含水印 它看起来像这样: public static boolean isWatermarked(PdfReader reader) throws DocumentException, IOException{ PdfStamper stamper = new PdfStamper(rea

我正在与iText合作,尝试创建一个非常基本的视觉水印检测器

程序的第一部分将水印图像添加到pdf的“UnderContent”中

然后,我想看看是否可以在该位置检测到水印图像,或者检查pdf背景是否包含水印

它看起来像这样:

public static boolean isWatermarked(PdfReader reader) throws DocumentException, IOException{
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("/Watermark_PDFs/results.pdf"));

    boolean wm = false;

    if(stamper.getUnderContent(1) != null) {
        wm = true;
    }
    stamper.close();
    return wm;
}
在阅读了()中的getUnderContent之后,我意识到getUnderContent不是我想要用来阅读pdf下内容的东西

是否有一种方法可以用来读取存储在“under content”中的数据,然后根据该数据做出决策


感谢

PDF页面的内容可以在单个PDF流中描述,也可以在一个接一个绘制的此类流的数组中描述。如果您向
PdfStamper
询问过多内容或*过少内容,它基本上会在该数组的开头添加另一个流,在结尾添加另一个流(对于过多内容);不过,其他软件的做法有所不同:例如,我认为PDFBox将所有内容合并到一个流中。当以后分析PDF时,通常很难识别此类技术,仅在每个库的基础上。您是否控制添加水印的过程?如果是这样,您可以“标记”水印,然后查找该标记。如果不是,您的要求就不可行,原因是@mklI确实控制添加水印的过程。目前,这只是我在网上找到的一个教程,它使用了:add_watermark=stamp.getUnderContent(I);添加水印。添加图像(水印图像);我目前正在查看PdfContentByte的概述,看看是否有任何方法可以用来“标记”或标记水印。想法?标记或标签要被谁识别?你呢?某些协作软件?市场上有什么吗?添加标记可以通过不同的方式完成:添加标记的内容操作符,向表单或图像XObject添加额外条目,。。。