C# 受密码和水印保护的Itextsharp Pdf

C# 受密码和水印保护的Itextsharp Pdf,c#,asp.net,itext,C#,Asp.net,Itext,在Itextsharp中是否有任何函数,无论pdf是否具有密码或水印 我已经写了下面的代码,但每次包含(“下载人”)都是动态的 byte[] bytes = Encoding.ASCII.GetBytes(FilePassword); int page1; if (FilePassword.Equals("")) { PdfReader pdfReader = new PdfReader(CurrentPath, bytes); countWaterMarkFound = 0;

在Itextsharp中是否有任何函数,无论pdf是否具有密码或水印

我已经写了下面的代码,但每次包含(“下载人”)都是动态的

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();
}
byte[]bytes=Encoding.ASCII.GetBytes(FilePassword);
int第1页;
if(FilePassword.Equals(“”)
{
PdfReader PdfReader=新PdfReader(当前路径,字节);
countWaterMarkFound=0;
//计算pdf中是否存在水印
用于(第1页=1;第1页水印)

水印不一定在PDF中标记为水印,您不会得到特定的检查

密码 首先,PDF中有几种类型的密码:

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

PDF规范中提供了一个默认密码值。如果使用该密码作为用户密码对PDF进行加密,则通常无需输入密码或输入空字符串作为密码即可打开该PDF

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

因此,

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

水印不一定在PDF中标记为水印,您不会得到特定的检查。谢谢@mkl。有没有检查PDF是否受密码保护