Estoy desarrollando una pequeña herramienta para marcar archivos PDF y funciona para algunos PDF y falla para otros.
Estoy usando la biblioteca iText y bouncycastle (dependencia)
pom.xml:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.6</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.49</version> </dependency>Se bloquea en esta línea (la primera línea de código):
PdfReader reader = new PdfReader(src);Con el siguiente stacktrace :
Exception in thread "main" com.itextpdf.text.exceptions.InvalidPdfException: class "org.bouncycastle.asn1.ASN1Primitive"'s signer information does not match signer information of other classes in the same package at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:727) at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:181) at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219) at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207) at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197) ... <from here it points to my code>He buscado en Google y algunas personas dicen que posiblemente el problema es que tengo esta biblioteca de bouncycastle duplicada en alguna parte.
Esto está dentro de una compilación de aplicación Spring con Maven . Entonces, ¿puede esto realmente ser un problema de la biblioteca?
Estoy usando JDK 1.8 .
Lo que he probado :
Pero el comportamiento es exactamente el mismo, algunos PDF funcionan ( siempre ) y otros no ( nunca ).
¿Alguna vez ha experimentado algún problema similar a este usando la biblioteca iText ?
¿El problema está en los archivos PDF que hacen que el código se bloquee y no en mi proyecto ?
Estoy completamente atascado aquí, por lo que agradecería cualquier ayuda/consejo. Gracias por adelantado.
Gracias a los comentarios de Bruno Lowagie y la pregunta vinculada y la sugerencia de mkl , encontré el problema.
En mi ruta de compilación había dos bibliotecas org.bouncycastle , una que agregué a través de Maven ( bcprov-jdk15on.jar ) y otra utilizada por Pivotal TC Server ( com.springsource.org.bouncycastle.jce-1.46.0.jar ).
Eliminé el contenedor del castillo hinchable de Pivotal TC Server y el error desapareció .
Al usar STS no pude eliminarlo, así que lo encontré en el sistema de archivos y lo moví de la carpeta que Pivotal TC esperaba que fuera. Luego, la lib desapareció en STS.
No lo eliminé por si acaso, solo lo moví a otro directorio. Si tengo problemas con Pivotal TC a partir de ahora actualizaré mi respuesta.