Itextsharp中是否有pdf具有密码或水印的功能。
我已经编写了以下代码,但是Contains(“ Downloaded By”)每次都是动态的。
byte[] bytes = Encoding.ASCII.GetBytes(FilePassword);
int page1;
if (FilePassword.Equals(""))
{
PdfReader pdfReader = new PdfReader(CurrentPath, bytes);
countWaterMarkFound = 0;
// Calculate whether watermark exist in the pdf
for (page1 = 1; page1 <= pdfReader.NumberOfPages; page1++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentPageText = PdfTextExtractor.GetTextFromPage(pdfReader, page1, strategy);
if (currentPageText.Contains("Downloaded By"))
{
countWaterMarkFound++;
// adding new WaterMark here
}
}
pdfReader.Close();
}
答案 0 :(得分:1)
在PDF中水印不一定是这样标记的,您不会对其进行一定的检查。
首先,PDF中存在多种密码:
如果PDF是加密的,并且使用所有者密码将其打开,则可以在PDF处理器中完全访问PDF。如果仅使用用户密码打开它,则PDF处理器可能会根据PDF规范限制您的访问。
PDF规范中提供了默认密码值。如果使用该密码作为用户密码对PDF进行加密,则通常可以完全不用输入密码或输入空字符串作为密码来打开它。
如果用户密码不是默认密码,则需要输入密码才能打开PDF。
因此
new PdfReader(CurrentPath)
打开PDF,则会对其进行加密;特别是使用非默认用户密码(或证书)进行保护; pdfReader = new PdfReader(CurrentPath)
打开它,请选中pdfReader.isEncrypted()
;如果返回true
,则使用默认的用户密码对PDF进行加密;否则它不会被加密。