2012-09-28 2 views
1

PDFRenderer 라이브러리를 통해 Java 프로그램에서 암호화 된 PDF 파일을 열려고합니다. 코드를 컴파일 할 때 PDFPassword 클래스에 오류가 발생합니다. 여기 내 코드의 일부입니다.PDFRenderer가 암호화 된 PDF를 여는 동안 오류가 발생합니다

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 
+0

은 자세한 내용은 PdfView.java의 라인 49의 주위에 코드를 제공하여 문제 해결? – chyx

+0

위의 코드 스 니펫은 지정된 코드의 마지막 줄인 49 줄에서만 49 줄 주위에 있습니다. –

+0

나만의 암호화 된 PDF 파일로 작동합니다. 네가 가진 파일일지도 모르지? 내 PDF 파일에 AES 128 비트 암호화를 사용했습니다. – demongolem

답변

0

나는 당신의 문제가 있지만 확실하지 오전도 :

당신이 this 라이브러리를 사용하는 경우가 재귀 적으로 호출이다 암호화 버그가 그 자체.

나는 문제가있는 stackoverflow.I 문제가 발견되어 stackoverflow 문제를 해결합니다. this

같은 변경 CryptoCipher 클래스 어쩌면이

+0

암호에 -/@ # $와 같은 특수 문자가 포함 된 경우에만 문제가 발생합니다. 일반 암호 영숫자의 경우 오류가 발생하지 않습니다. –

+0

링크에서 내 코드를 사용해 보셨나요? –

+0

아니, 나는하지 않았다. 나는 시도 할 것이다. –

관련 문제