PDFRenderer выдает ошибку при открытии зашифрованного PDF

Я пытаюсь открыть зашифрованный файл PDF в программе Java через библиотеку PDFRenderer. При компиляции кода выдает ошибку для класса PDFPassword. Вот часть моего кода.

    RandomAccessFile raf = new RandomAccessFile(new File(filename), "r");
    FileChannel fc = raf.getChannel();
    ByteBuffer buf = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
    String password = "58e72df9-0";
    try{
    PDFPassword pass = new PDFPassword(password);
    //System.out.println(PDFPassword.nonNullPassword(pass));
    PDFFile pdffile = new PDFFile(buf, pass);

И ошибка, которую я получаю:

Exception in thread "main" java.lang.ExceptionInInitializerError
at com.sun.pdfview.decrypt.PDFPassword$PDFDocEncodingByteGenerator.createCharsetEncoder(PDFPassword.java:256)
at com.sun.pdfview.decrypt.PDFPassword$CharsetEncoderGenerator.generateBytes(PDFPassword.java:222)
at com.sun.pdfview.decrypt.PDFPassword.generatePossiblePasswordBytes(PDFPassword.java:167)
at com.sun.pdfview.decrypt.PDFPassword.getPasswordBytes(PDFPassword.java:111)
at com.sun.pdfview.decrypt.StandardDecrypter.<init>(StandardDecrypter.java:159)
at com.sun.pdfview.decrypt.PDFDecrypterFactory.createStandardDecrypter(PDFDecrypterFactory.java:316)
at com.sun.pdfview.decrypt.PDFDecrypterFactory.createDecryptor(PDFDecrypterFactory.java:99)
at com.sun.pdfview.PDFFile.readTrailer(PDFFile.java:1051)
at com.sun.pdfview.PDFFile.parseFile(PDFFile.java:1175)
at com.sun.pdfview.PDFFile.<init>(PDFFile.java:126)
at pdfview.pdfView.main(PdfView.java:49)
    Caused by: java.lang.ArrayIndexOutOfBoundsException: -128
at com.sun.pdfview.PDFDocCharsetEncoder.<clinit>(PDFDocCharsetEncoder.java:68)
... 11 more

person Prashant Mohan    schedule 28.09.2012    source источник
comment
Предоставьте код вокруг строки 49 PdfView.java для получения более подробной информации?   -  person chyx    schedule 28.09.2012
comment
приведенный выше фрагмент кода находится вокруг строки 49, причем строка 49 является последней строкой данного кода.   -  person Prashant Mohan    schedule 01.10.2012
comment
У меня работает с моим собственным зашифрованным файлом PDF. Может быть, это файл, который у вас есть? Я использовал 128-битное шифрование AES в своем pdf-файле.   -  person demongolem    schedule 04.11.2012


Ответы (1)


Я не уверен в вашей проблеме, но также:

если вы используете эту библиотеку, у нее есть крипто-ошибка, которая рекурсивно вызывает себя.

У меня проблема с криптографией, которая представляет собой stackoverflow. Я нашел проблему, и она решает проблему stackoverflow. Измените класс CryptoCipher, например этот

может это решит вашу проблему

person Barış Çırıka    schedule 09.11.2012
comment
Проблема только тогда, когда пароль содержит специальные символы, такие как -/@#$ и т.д. Для обычного пароля буквенно-цифрового это не сбой - person Nitin Mesta; 29.03.2017
comment
Нет. Я не знал. я постараюсь - person Nitin Mesta; 30.03.2017