2015-08-10 4 views
3

Мне недавно пришлось обновить до iText, но у меня проблемы с запуском setEncryption. Я использую iText 5.5.6.iText setEncryption error

document = new Document(PageSize.LETTER, 36, 36, 72, 72); 
writer = PdfWriter.getInstance(document, out); 
writer.setEncryption(null, OWNER_PASSWORD.getBytes(), writer.AllowPrinting|writer.AllowCopy, PdfWriter.STANDARD_ENCRYPTION_128); 

получает мне следующую ошибку:

java.lang.SecurityException: class "org.bouncycastle.asn1.ASN1Primitive"'s signer information does not match signer information of other classes in the same package 

Сначала я думал, что я мог бы использовать неправильный файл JAR для BouncyCastle. Я был на 1,52, когда, по-видимому, iText 5.5.0 хочет 1,49, но даже используя старые JAR-файлы, я получаю те же результаты.

Я пробовал как bcprov-jdk15on-1.49, так и bcprov-ext-jdk15on-1.49, поэтому я действительно не уверен, что я делаю неправильно на данный момент.

+1

Текст исключения указывает, что у вас есть несколько версий BouncyCastle на вашем пути к классу. Удалите все, кроме одного. – mkl

+0

Насколько я могу судить, у меня есть только одна. Если я удалю его, Tomcat не сообщит о каких-либо ошибках, но вместо PDF мне будет предложено сохранить файл с именем «reportgenerator», который является только отчет об исключении для NoClassDefFoundError о ASN1Primitive от bouncycastle. – Beacon80

+0

Это показывает, что у вас есть (по крайней мере) две версии BouncyCastle и удалены из одного iText. Скорее всего, остальные версии старше, возможно, до 1.47, большой уродливый API. – mkl

ответ

1

Оказалось, что у меня есть вторая библиотека Bouncy Castle, скрывающаяся. Спасибо mkl.

Смежные вопросы