Je reçois les erreurs suivantes en essayant de convertir PDF (XFA) en chaîne. Ces erreurs ont commencé à venir lorsque je suis passé de PDFBox 1.8.12
à PDFBox 2.0.4
PDFBox 2.0.4: XFA à l'erreur de texte
Voici le journal
Mar 09, 2017 7:16:07 AM org.apache.pdfbox.pdfparser.BaseParser parseCOSArray
WARNING: Corrupt object reference at offset 779916
Mar 09, 2017 7:16:07 AM org.apache.pdfbox.pdfparser.BaseParser parseCOSArray
WARNING: Corrupt object reference at offset 780049
Mar 09, 2017 7:16:07 AM org.apache.pdfbox.pdfparser.BaseParser parseCOSArray
WARNING: Corrupt object reference at offset 780074
java.io.IOException: Unknown dir object c='>' cInt=62 peek='>' peekInt=62 at offset 780074
at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:951)
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSArray(BaseParser.java:651)
at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:866)
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionaryValue(BaseParser.java:150)
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionaryNameValuePair(BaseParser.java:274)
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionary(BaseParser.java:207)
at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:854)
at org.apache.pdfbox.pdfparser.COSParser.parseFileObject(COSParser.java:772)
at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:741)
at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:672)
at org.apache.pdfbox.pdfparser.COSParser.parseDictObjects(COSParser.java:632)
at org.apache.pdfbox.pdfparser.PDFParser.initialParse(PDFParser.java:217)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:252)
et
java.io.IOException: Wrong type of referenced length object COSObject{7, 0}: COSDictionary
at org.apache.pdfbox.pdfparser.COSParser.getLength(COSParser.java:907)
at org.apache.pdfbox.pdfparser.COSParser.parseCOSStream(COSParser.java:949)
at org.apache.pdfbox.pdfparser.COSParser.parseFileObject(COSParser.java:780)
at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:741)
at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:672)
at org.apache.pdfbox.pdfparser.COSParser.parseDictObjects(COSParser.java:632)
at org.apache.pdfbox.pdfparser.PDFParser.initialParse(PDFParser.java:217)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:252)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:966)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:922)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:870)
Je lis la migration et utilisé la charge au lieu de loadNonSeq, parce que maintenant les poignées PDFBox à l'interne.
Toutes les suggestions pour corriger ces erreurs. J'ai vérifié votre théorie
EDIT # 2 @TilmanHausherr. J'ai ouvert le fichier dans Sublime, supprimé les espaces supplémentaires dans le démarrage et l'a enregistré. J'ai obtenu l'erreur suivante
org.apache.pdfbox.filter.FlateFilter decode
SEVERE: FlateFilter: stop reading corrupt stream due to a DataFormatException
java.io.IOException: java.util.zip.DataFormatException: invalid distance too far back
at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:82)
at org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:69)
at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:162)
at org.apache.pdfbox.pdfparser.PDFXrefStreamParser.<init>(PDFXrefStreamParser.java:56)
at org.apache.pdfbox.pdfparser.COSParser.parseXrefStream(COSParser.java:2075)
at org.apache.pdfbox.pdfparser.COSParser.parseXrefObjStream(COSParser.java:348)
at org.apache.pdfbox.pdfparser.COSParser.parseXref(COSParser.java:303)
at org.apache.pdfbox.pdfparser.PDFParser.initialParse(PDFParser.java:194)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:252)
at utils.PDFManager.PDFToText(PDFManager.java:280)
at processing.charge.CertificateUtils.getCertificateTypeFromFile(CertificateUtils.java:56)
at processing.charge.CertificateUtils.getCertificateType(CertificateUtils.java:48)
at processing.Controller.getDocumentType(Controller.java:110)
at processing.Controller.insertIntoDb(Controller.java:43)
at Test.main(Test.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.util.zip.DataFormatException: invalid distance too far back
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.Inflater.inflate(Inflater.java:280)
at org.apache.pdfbox.filter.FlateFilter.decompress(FlateFilter.java:107)
at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:64)
... 19 more
Mar 09, 2017 11:07:22 PM org.apache.pdfbox.filter.FlateFilter decode
SEVERE: FlateFilter: stop reading corrupt stream due to a DataFormatException
java.io.IOException: java.util.zip.DataFormatException: invalid distance too far back
at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:82)
at org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:69)
at org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:162)
at org.apache.pdfbox.pdfparser.PDFXrefStreamParser.<init>(PDFXrefStreamParser.java:56)
at org.apache.pdfbox.pdfparser.COSParser.parseXrefStream(COSParser.java:2075)
at org.apache.pdfbox.pdfparser.COSParser.parseXrefObjStream(COSParser.java:348)
at org.apache.pdfbox.pdfparser.COSParser.parseXref(COSParser.java:303)
at org.apache.pdfbox.pdfparser.PDFParser.initialParse(PDFParser.java:194)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:252)
at utils.PDFManager.PDFToText(PDFManager.java:280)
at processing.charge.CertificateUtils.getCertificateTypeFromFile(CertificateUtils.java:56)
at processing.charge.CertificateUtils.getCertificateType(CertificateUtils.java:49)
at processing.Controller.getDocumentType(Controller.java:110)
at processing.Controller.insertIntoDb(Controller.java:43)
at Test.main(Test.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.util.zip.DataFormatException: invalid distance too far back
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.Inflater.inflate(Inflater.java:280)
at org.apache.pdfbox.filter.FlateFilter.decompress(FlateFilter.java:107)
at org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:64)
également pour vérifier votre théorie, j'ai ouvert un autre fichier (qui fonctionnait correctement) dans Sublime, et il avait les mêmes espaces, les onglets et les Conseillers.
J'ai supprimé le tag itext car la question ne concerne pas iText. Ce qui rend votre commentaire redondant, @ bruno.lowagie. :) –
@TilmanHausherr J'ai ajouté le lien aux PDF. S'il vous plaît vérifier ces. Merci – Mayank
Les deux fichiers ne sont pas valides. Ils peuvent être ouverts avec PDFBox en supprimant les caractères vides (CRs et Tabs) au début avec NOTEPAD ++. Avez-vous eu ces fichiers comme ça ou est-ce une faille d'un serveur web cassé? J'ai ouvert un problème avec vos fichiers: https://issues.apache.org/jira/browse/PDFBOX-3714 –