1

PDFRenderer ライブラリを使用して Java プログラムで暗号化された PDF ファイルを開こうとしています。コードをコンパイルすると、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
4

1 に答える 1

0

あなたの問題についてはわかりませんが、次のこともできます。

このライブラリを使用すると、それ自体を再帰的に呼び出す暗号バグがあります。

問題が見つかり、stackoverflowの問題が解決しました。このようにCryptoCipherクラスを変更します

多分これはあなたの問題を解決します

于 2012-11-09T15:59:31.117 に答える