具有密码和水印保护的Itextsharp Pdf

时间:2018-11-15 11:46:23

标签: c# asp.net itext

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();
}

1 个答案:

答案 0 :(得分:1)

水印

在PDF中水印不一定是这样标记的,您不会对其进行一定的检查。

密码

首先,PDF中存在多种密码:

  • 用户密码
  • 所有者密码

如果PDF是加密的,并且使用所有者密码将其打开,则可以在PDF处理器中完全访问PDF。如果仅使用用户密码打开它,则PDF处理器可能会根据PDF规范限制您的访问。

PDF规范中提供了默认密码值。如果使用该密码作为用户密码对PDF进行加密,则通常可以完全不用输入密码或输入空字符串作为密码来打开它。

如果用户密码不是默认密码,则需要输入密码才能打开PDF。

因此

  • 如果您无法使用new PdfReader(CurrentPath)打开PDF,则会对其进行加密;特别是使用非默认用户密码(或证书)进行保护;
  • 如果可以使用pdfReader = new PdfReader(CurrentPath)打开它,请选中pdfReader.isEncrypted();如果返回true,则使用默认的用户密码对PDF进行加密;否则它不会被加密。