Чтобы запретить копирование содержимого PDF пользователями, просматривающими PDF-файл, можно зашифровать PDF-файл с помощью пароля владельца (и без пароля пользователя) и установить соответствующие флаги разрешений, запрещающие копирование содержимого. В этом случае по-прежнему будет возможен выбор текста, но содержимое не попадет в буфер.
PdfWriter pdfWriter = new PdfWriter("C:/out.pdf", new WriterProperties().setStandardEncryption(
"".getBytes(), "ownerPass".getBytes(), EncryptionConstants.ALLOW_SCREENREADERS, EncryptionConstants.ENCRYPTION_AES_256));
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
HtmlConverter.convertToPdf(new FileInputStream("C:/in.html"), pdfDocument);
pdfDocument.close();
Если инструмент, который вы используете для анализа текста из результирующего PDF-файла, соответствует конфигурации разрешений, которую мы установили ранее, у вас могут возникнуть проблемы с извлечением текста из этого PDF-файла в режиме по умолчанию (пользовательский режим). В этом случае вы можете передать инструменту пароль владельца, который вы установили ранее, чтобы он знал, что вы являетесь владельцем документа, и вам разрешено извлекать из него текст. В качестве альтернативы, если инструмент не предоставляет такие возможности, вы можете расшифровать PDF-файл и превратить его в обычный PDF-файл без каких-либо ограничений прямо перед передачей этого PDF-файла в инструмент синтаксического анализа. Вот код, который расшифровывает PDF:
PdfDocument pdfDocument = new PdfDocument(new PdfReader("C:/out.pdf",
new ReaderProperties().setPassword("ownerPass".getBytes())),
new PdfWriter("C:/decrypted.pdf"));
pdfDocument.close();
person
Alexey Subach
schedule
12.01.2020