2017-08-10 1 views
0

J'essaie de fusionner des fichiers PDF mais j'obtiens une erreur lors de l'ouverture du fichier. Mon code est:Merge Pdf: Erreur: une erreur est survenue lors de l'ouverture de ce document. Impossible d'ouvrir le document car il ne contient pas de pages

public void merge(){ 
     byte[] pdf1 = tobyte("hello"); 
     byte[] pdf2 = tobyte("world"); 
     PDFMergerUtility merger = new PDFMergerUtility(); 
     merger.addSource(new ByteArrayInputStream(pdf1)); 
     merger.addSource(new ByteArrayInputStream(pdf2)); 
     merger.setDestinationFileName("final.pdf"); 
     merger.mergeDocuments(); 
    } 

    static byte[] tobyte(String message) { 
     PDDocument doc = new PDDocument(); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     doc.save(baos); 
     return baos.toByteArray(); 
    } 
+1

Je signale simplement que vous ne l'utilisez '' l'intérieur message' tobyte() '. – shmosel

+0

merci @shmosel. c'est une erreur stupide .. –

+0

"ce document ne peut pas être ouvert car il n'a pas de pages" est vrai. Votre document auto-généré n'a pas de pages. –

Répondre

0

Voici le code qui fonctionne

//Loading an existing PDF document 
File file1 = new File("sample1.pdf"); 
PDDocument doc1 = null; 
try { 
    doc1 = PDDocument.load(file1); 
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 

File file2 = new File("sample2.pdf"); 
PDDocument doc2 = null; 
try { 
    doc2 = PDDocument.load(file2); 
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 

//Instantiating PDFMergerUtility class 
PDFMergerUtility PDFmerger = new PDFMergerUtility(); 

//Setting the destination file 
PDFmerger.setDestinationFileName("merged.pdf"); 

//adding the source files 
PDFmerger.addSource(file1); 
PDFmerger.addSource(file2); 

//Merging the two documents 
try { 
    PDFmerger.mergeDocuments(); 
} catch (COSVisitorException | IOException e) { 
    e.printStackTrace(); 
} 

System.out.println("Documents merged"); 
//Closing the documents 
try { 
    doc1.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
try { 
    doc2.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
}