Параметры командной строки PDFBox не могут расшифровать файл PDF с действительным паролем пользователя - PullRequest
0 голосов
/ 13 июня 2018

Я использую PDFBox 2.0.8 и пытаюсь использовать параметры командной строки, предоставленные в JAR-файл для расшифровки PDF.Есть несколько файлов PDF, которые приводят к ошибке, говоря, что они могут быть расшифрованы только с помощью пароля владельца (хорошо), однако я смог удалить пароль PDF с помощью онлайн-инструмента, который использует QPDF.

Теперь моя проблемаМогу ли я использовать тот же вариант с PDFBox, чтобы расшифровать PDF, не беспокоясь о резервировании пароля владельца / пользователя?(Я полагаю, ДА, потому что один и тот же пароль может открыть PDF-файл с помощью Acrobat, а также сохранить расшифрованную копию PDF, указав тот же пароль).

Мой текущий пример командной строки

 java -jar "D:\pdfbox.jar" Decrypt -password xxxxxxxx 
   "D:\uploads\Jjre2pJsC-7KerheiZ8OUt079E7d4dlS.pdf"

Исключение, которое я получаю:

  2018-06-13 - 09:52:30 - error: SaveDecryptedPDF > Failed > Error: Command 
        failed: java -jar "D:\pdfbox.jar" Decrypt -password xxxxxxxx 
        "D:\uploads\Jjre2pJsC-7KerheiZ8OUt079E7d4dlS.pdf"
       Exception in thread "main" java.io.IOException: Error: You are only allowed to 
        decrypt a document with the owner password.
        at org.apache.pdfbox.tools.Decrypt.decrypt(Decrypt.java:154)
        at org.apache.pdfbox.tools.Decrypt.main(Decrypt.java:64)
        at org.apache.pdfbox.tools.PDFBox.main(PDFBox.java:52)

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

1 Ответ

0 голосов
/ 13 июня 2018

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

Различные библиотеки и инструменты следуют этимсемантика в разной степени.Некоторые даже полностью игнорируют это различие.

С другой стороны, инструмент PDFBox Decrypt явно пытается следовать этой семантике и позволяет владельцу только расшифровывать PDF:

AccessPermission ap = document.getCurrentAccessPermission();
if(ap.isOwnerPermission())
{
    document.setAllSecurityToBeRemoved(true);
    document.save( outfile );
}
else
{
    throw new IOException(
            "Error: You are only allowed to decrypt a document with the owner password." );
}

(org.apache.pdfbox.tools.Decrypt method decrypt)

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

...