Actuellement, je suis capable de fusionner deux fichiers PDF lors de l'utilisation de java.io.File, mais impossible de les fusionner en utilisant les flux d'entrée et de sortie. Ci-dessous, le code fonctionne et génère un fichier PDF fusionné en réussissant.Impossible de fusionner les flux avec PDFBox
File mainDoc = new File(path...);
File additionalDoc = new File(path...);
PDFMergerUtility pdfMerger = new PDFMergerUtility();
pdfMerger.setDestinationFileName(path + "/merged.pdf");
pdfMerger.addSource(mainDoc);
pdfMerger.addSource(additionalDoc);
pdfMerger.mergeDocuments(null);
J'ai ensuite essayé de faire la même chose en utilisant des flux.
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream mainDocStream = new FileInputStream(path...);
InputStream additionalDocSteam = new FileInputStream(path...);
PDFMergerUtility pdfMerger = new PDFMergerUtility();
pdfMerger.addSource(mainDocStream);
pdfMerger.addSource(additionalDocSteam);
pdfMerger.setDestinationStream(out);
pdfMerger.mergeDocuments(null);
Le code ci-dessus lorsque la ligne atteint pdfMerger.mergeDocuments (NULL); throws Exception suivante:
java.io.IOException: Error: End-of-File, expected line at org.apache.pdfbox.pdfparser.BaseParser.readLine(BaseParser.java:1119) at org.apache.pdfbox.pdfparser.COSParser.parseHeader(COSParser.java:2005) at org.apache.pdfbox.pdfparser.COSParser.parsePDFHeader(COSParser.java:1988) at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:269) at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1143) at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1059) at org.apache.pdfbox.multipdf.PDFMergerUtility.mergeDocuments(PDFMergerUtility.java:263)
Enfin j'ai essayé de suivre cette réponse (Merge Pdf Files Using PDFBox) comme un exemple, mais mon produit pdf ne semble pas avoir fusionné ces deux pdfs. C'est le code que j'ai essayé. Le code ci-dessus génère un PDF mais le PDF nouvellement créé contient uniquement le contenu du document principal et non le second. Il semble donc qu'il me manque quelque chose et les documents ne sont pas fusionnés.
Puisque je ne veux pas ouvrir une nouvelle question. Y a-t-il des avantages à utiliser appendDocument au lieu de mergeDocuments? – Stephan
Stacktrace ajouté. – Stephan
Merci; cette stacktrace est exactement celle que vous obtenez lorsque vous ouvrez un fichier vide. La fusion fonctionne pour moi avec des flux (non vides). –