Itextsharp Pdf с паролем и водяным знаком защищены - PullRequest
0 голосов
/ 15 ноября 2018

Есть ли в 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 голосов
/ 19 ноября 2018

Водяные знаки

Водяной знак не обязательно помечен как таковой в PDF, вы не получите определенный чек на него.

Пароли

Прежде всего,Есть несколько типов паролей в PDF:

  • пароль пользователя и
  • пароль владельца .

Если PDF-файл зашифрован и вы открываете его с паролем владельца , у вас есть полный доступ к PDF-документу в процессорах PDF.Если вы просто откроете его с помощью пароля пользователя , процессор PDF может ограничить ваш доступ в соответствии со спецификацией PDF.

В спецификации PDF указано значение пароля по умолчанию.Если PDF-файл зашифрован с использованием этого пароля в качестве пароля пользователя, обычно его можно открыть, не вводя пароль вообще или вводя пустую строку в качестве пароля.

Если пароль пользователя не является паролем по умолчанию, вам необходимовведите пароль для открытия PDF.

Таким образом,

  • , если вы не можете открыть PDF с помощью new PdfReader(CurrentPath), он зашифрован;в частности, он защищен нестандартным паролем пользователя (или сертификатом);
  • , если вы можете открыть его с помощью pdfReader = new PdfReader(CurrentPath), установите флажок pdfReader.isEncrypted();если возвращается true, PDF шифруется с использованием пароля пользователя по умолчанию;в противном случае он не зашифрован.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...