【发布时间】:2015-10-19 13:14:23
【问题描述】:
有谁知道是否可以使用 iTextSharp 检查 PDF 文档上的水印?
我想在添加新的之前执行此操作。就我而言,如果有人尚未添加新水印,我必须添加它,但我不知道如何使用 iTextSharp 的 PdfReader 类来检查它。
像这样的:
var reader = new PdfReader(bytes);
var stamper = new PdfStamper(reader, ms);
var dc = stamper.GetOverContent(pageNumber);
bool alreadyStamped = cd.CheckIfTextOrImageExists();
【问题讨论】:
-
这很可能取决于 PDF 类型及其创建方式。大多数 PDF 只是打包的图像文件,在这些情况下,iTextSharp 无法做到这一点。唯一可行的方法是您可以检测 PDF 中的多个图层并在其中一个图层中定位图像。但是,通常在“发布”PDF 时,这些图层会被展平。
-
首先,有真正的注释水印,只有您个人认为是水印的文本和/或图像。如果您添加了真正的水印,那么您应该能够浏览每个页面的
/ANNOTS字典。见this for a start on that。如果你有任意文本,那么你需要extract text,如果你有图像,那么extract images。另外,水印上的read the comments here -
感谢@ChrisHaas 的建议。我将尝试在 PDF 文档中查找特定的单词。那可能行得通。我肯定不会使用图像,只使用纯文本。
-
在我的案例中使用文本搜索。
codePdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);code
标签: c# .net pdf-generation itextsharp