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
은 자세한 내용은 PdfView.java의 라인 49의 주위에 코드를 제공하여 문제 해결? – chyx
위의 코드 스 니펫은 지정된 코드의 마지막 줄인 49 줄에서만 49 줄 주위에 있습니다. –
나만의 암호화 된 PDF 파일로 작동합니다. 네가 가진 파일일지도 모르지? 내 PDF 파일에 AES 128 비트 암호화를 사용했습니다. – demongolem