Чтение защищенных паролем PDF-файлов в Pentaho с помощью UDJC

Я пытаюсь разблокировать защищенный паролем файл PDF с помощью bcprov-jdk15on-1.56.jar и itextpdf-5.5.10.jar, но получаю следующее исключение. Я использую задачу преобразования «Определяемый пользователем класс Java».

Исключение: информация о подписывающей стороне класса "org.bouncycastle.asn1.ASN1Primitive" не соответствует информации о подписывающей стороне других классов в том же пакете

Вот строки кода, которые я написал,

String pdfFilePath = get(Fields.In, "PDFFilePath").getString(r);

String dest = pdfFilePath +"_unlocked.pdf";

try {
    PdfReader reader = new PdfReader(pdfFilePath,owner_password.getBytes());
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));

    stamper.close();
    reader.close();
}
catch(Exception e) {
    logBasic("EXCEPTION WHILE UNLOCKING PDF = " + e.getMessage());
}

Любая идея, что не так с этим?

Спасибо, Нилеш


person NNaseet    schedule 26.01.2017    source источник
comment
Вы упомянули Пентахо. Вы говорите, что Pentaho поставляется с iText 5.5.10 под AGPL? Если да, то выпускает ли Pentaho свой код как AGPL?   -  person Bruno Lowagie    schedule 27.01.2017
comment
@BrunoLowagie, неясно, что такое лицензия, но исходники действительно выпущены: github.com/pentaho   -  person Alexey Subach    schedule 27.01.2017


Ответы (1)


Кажется, у вас есть несколько банок BouncyCastle в вашем пути к классам. Попробуйте использовать версию 1.49, с которой скомпилирован iText 5.5.10, и если это не поможет, вам придется выяснить, какие jar-файлы находятся в вашем пути к классам, и избавиться от дубликатов.

person Alexey Subach    schedule 26.01.2017
comment
Запуск mvn dependency:tree может помочь. - person Amedee Van Gasse; 27.01.2017
comment
@Алексей- Спасибо. Уже был bcprov-jdk14-138.jar, который по умолчанию поставляется с Pentaho (вместе со всеми другими библиотеками). Удалил его и не получил вышеуказанную ошибку. Но теперь я столкнулся с другой проблемой. Он не может открыть файл PDF с этим паролем. пароль правильный; Я могу открыть PDF с тем же паролем из Acrobat Reader. Я получаю сообщение об ошибке PdfReader не открывается с паролем владельца из задачи Pentaho UDJC. - person NNaseet; 27.01.2017
comment
@NNaseet, это может быть больше вопрос к разработчикам Pentaho, правильно ли они используют iText. Однако проблема может быть намного проще: pdf-документы могут иметь пароли пользователя и владельца, и только пароли владельца дают полный контроль над документами. Указанный вами пароль, скорее всего, является паролем пользователя, которого достаточно для чтения документа, но недостаточно для выполнения манипуляций, которые пытаются произвести. - person Alexey Subach; 27.01.2017
comment
@AlexeySubach - да, это только пароль владельца. Да, я проверяю сообщество Pentaho. Спасибо за вашу помощь ! - person NNaseet; 27.01.2017
comment
@AlexeySubach - Похоже, это пароль пользователя, потому что та же программа работала для другого PDF с паролем владельца. - person NNaseet; 27.01.2017