iTextSharp - проверка свойств документа PDF - копирование контента, копирование контента для доступности

Я пытаюсь проверить, имеет ли документ PDF для загрузки следующие свойства документа: "Копирование контента" и "Копирование контента для доступности" разрешено / не разрешено с помощью iTextSharp PDFReader. Есть ли свойство для проверки этой функциональности. Я вставил пример кода, который НЕ возвращает ожидаемый результат.

В поисках решения с помощью iTextSharp

Свойства документа PDF

Образец кода:

            using (PdfReader r = new PdfReader(@"xxx\yyy.pdf"))
            {
                if (PdfEncryptor.IsScreenReadersAllowed((int)(r.Permissions)))
                {
                    Console.WriteLine("Content Accessibility Enabled");
                }

                if (PdfEncryptor.IsCopyAllowed((int)(r.Permissions)))
                {
                    Console.WriteLine("Copy Enabled");
                }

                if (PdfEncryptor.IsAssemblyAllowed((int)(r.Permissions)))
                {
                    Console.WriteLine("Document Assembly Enabled");
                }
            }

1 ответ

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

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

if (PdfEncryptor.IsScreenReadersAllowed((int)(r.Permissions)) || !r.IsEncrypted())
{
    Console.WriteLine("Content Accessibility Enabled");
}

if (PdfEncryptor.IsCopyAllowed((int)(r.Permissions)) || !r.IsEncrypted())
{
    Console.WriteLine("Copy Enabled");
}

if (PdfEncryptor.IsAssemblyAllowed((int)(r.Permissions)) || !r.IsEncrypted())
{
    Console.WriteLine("Document Assembly Enabled");
}
Другие вопросы по тегам