fonction de l'utilisation de la bibliothèque iText pour concaténer / fusion de fichiers pdf ensemble - l'origine de certains problèmes
J'utilise le code suivant pour fusionner des fichiers Pdf ensemble à l'aide de la bibliothèque iText:
public static void concatenatePdfs(List<File> listOfPdfFiles, File outputFile) throws DocumentException, IOException {
Document document = new Document();
FileOutputStream outputStream = new FileOutputStream(outputFile);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent();
for (File inFile : listOfPdfFiles) {
PdfReader reader = new PdfReader(inFile.getAbsolutePath());
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
document.newPage();
PdfImportedPage page = writer.getImportedPage(reader, i);
cb.addTemplate(page, 0, 0);
}
}
outputStream.flush();
document.close();
outputStream.close();
}
Généralement, cela fonctionne très bien! Mais de temps à autres, c'est la rotation de certaines pages de 90 degrés? - On jamais que cela se produise?
Je suis à la recherche dans les documents eux-mêmes pour voir ce qui est spécial au sujet de ceux qui sont en train d'être renversé.
Vous devez vous connecter pour publier un commentaire.
Il y a des erreurs de temps en temps parce que vous êtes à l'aide de la méthode incorrecte pour concaténer des documents. Veuillez lire le chapitre 6 de mon livre et vous remarquerez que l'utilisation de
PdfWriter
pour concaténer (ou de fusion) des documents PDF est faux:La concaténation de fichiers Pdf est fait à l'aide de
PdfCopy
, voir par exemple le FillFlattenMerge2 exemple:Il y a d'autres exemples dans le livre.
document.close()
ferme également laPdfWriter
instance et de laOutputStream
utilisé par l'écrivain. Vous pouvez éviter cela en utilisantwriter.setCloseStream(false);
. Par exemple: si vous avez uneZipOutputStream
à laquelle vous ajoutez plusieurs fichiers Pdf, vous ne voulez pas iText pour fermer ce flux.Au cas où quelqu'un est à la recherche pour elle, à l'aide de Bruno Lowagie la bonne réponse ci-dessus, voici la version de la fonction ne semble pas avoir la page flipping problème que j'ai décrit ci-dessus: