Hemos detectado que cuando se hace uso de la aplicación Autofirma v1.7.2 para la firman las facturas a veces se produce un error. Estas facturas llegan en formato pdf y se ha detectado que algunos de los pdfs que se reciben no es posible firmarlos. En concreto el problema es que no los identifica como pdf sino como fichero binario. Sin embargo los ficheros sí se pueden abrir con Acrobat sin problema alguno.
Se han activado los logs de la aplicación Autofirma y se ha visto el siguiente mensaje:
2023-03-16T14:35:19.795446400Z16789773197954464005013es.gob.afirmaWARNINGes.gob.afirma.core.misc.MimeHelper<init>23No se pudo detectar el formato de los datos
Se ha procedido a abrir los fichero para analizar el contenido y se ha identificado que aquellos que no se reconocen como pdf tienen una cabecera distinta a aquellos que funcionan, tienen cabeceras de este estilo:
Los ficheros se han abierto desde Acrobat Reader y también por programación mediante java y no dan error alguno. Se identifican y se accede a ellos correctamente. La solución sencilla sería eliminar esas cabeceras antes de firmarlas mediante un programa que se realizase, pero la facturas ya no tendrían validez al ser distintas a las recibidas. Por todo ello solicito su ayuda ¿Se puede solucionar de alguna forma?
Haciendo uso de GitHub y la publicación del código hemos visto que la librería afirma-core es la que contiene la clase es.gob.afirma.core.misc.MimeHelper. Esta clase hace uso de la clase net.sf.jmimemagic.MagicMatch para verificar el tipo de fichero. Se ha realizado un programa que hace uso de la clase MagicMatch y ésta no reconoce como pdf aquellos que contienen las cabecera indicada más arriba.
Adjunto envío dos pdf de ejemplo, si se abren desde Autofirma uno se identifica como pdf y el otro como binario, la diferencia son las cabeceras indicadas. Tambié una imagen con la información que indica Autofirma, tanto para la versión 1.7.2 como para la versión 1.6.5:
Hemos detectado que cuando se hace uso de la aplicación Autofirma v1.7.2 para la firman las facturas a veces se produce un error. Estas facturas llegan en formato pdf y se ha detectado que algunos de los pdfs que se reciben no es posible firmarlos. En concreto el problema es que no los identifica como pdf sino como fichero binario. Sin embargo los ficheros sí se pueden abrir con Acrobat sin problema alguno.
Se han activado los logs de la aplicación Autofirma y se ha visto el siguiente mensaje:
Se ha procedido a abrir los fichero para analizar el contenido y se ha identificado que aquellos que no se reconocen como pdf tienen una cabecera distinta a aquellos que funcionan, tienen cabeceras de este estilo:
--F2B80151804830459D127FA Content-Length: 43346 Content-Type: application/pdf X-Content-Length: 43346 X-compId: data X-compDateC: 2023-02-07 X-compTimeC: 13:10:58 X-compDateM: 2023-02-07 X-compTimeM: 14:17:02 X-compStatus: online X-pVersion: 0047 X-compVers: 1 X-isAddon: 0 X-volName: VGSCENBDCPA %PDF-1.3
Los ficheros se han abierto desde Acrobat Reader y también por programación mediante java y no dan error alguno. Se identifican y se accede a ellos correctamente. La solución sencilla sería eliminar esas cabeceras antes de firmarlas mediante un programa que se realizase, pero la facturas ya no tendrían validez al ser distintas a las recibidas. Por todo ello solicito su ayuda ¿Se puede solucionar de alguna forma?
Añado más información técnica: internos.zip
Haciendo uso de GitHub y la publicación del código hemos visto que la librería afirma-core es la que contiene la clase es.gob.afirma.core.misc.MimeHelper. Esta clase hace uso de la clase net.sf.jmimemagic.MagicMatch para verificar el tipo de fichero. Se ha realizado un programa que hace uso de la clase MagicMatch y ésta no reconoce como pdf aquellos que contienen las cabecera indicada más arriba.
Adjunto envío dos pdf de ejemplo, si se abren desde Autofirma uno se identifica como pdf y el otro como binario, la diferencia son las cabeceras indicadas. Tambié una imagen con la información que indica Autofirma, tanto para la versión 1.7.2 como para la versión 1.6.5: