2017-06-20 3 views
0

Ich versuche, ein vorhandenes PDF in ein anderes zu kopieren, bevor ich es schreibe. hier ist mein Code, um das bestehende PDF in die ByteOutputStream zu kopieren:Pdfcopy gibt ein leeres PDF zurück

 documentPDF.open() 

    for(int i=0;i<nbPages;){ 
      copy.addPage(copy.getImportedPage(reader, ++i)) 
    } 
    documentPDF.close() 
    copy.close() 


    PdfReader reader= new PdfReader("DocDeBase30.pdf"); 
    reader.selectPages("1-5") 
    def documentPDF =new Document() 
    ByteArrayOutputStream baos = new ByteArrayOutputStream() 
    PdfCopy copy = new PdfCopy(documentPDF, baos) 
    documentPDF.open() 
    for(int i=0;i<nbPages;){ 
      copy.addPage(copy.getImportedPage(reader, ++i)) 
    } 
    documentPDF.close() 
    copy.close() 
    reader.close(); 
    return baos 

dann bin Rendering ich die pdf-Datei zu diesem Schritt meiner Ansicht nach mit:

 response.setContentType("application/pdf") 
       response.setHeader('Content-disposition', "attachment; filename=intercalaire.pdf") 
       response.outputStream << result 
       response.outputStream.flush() 
    result.close() 

wo Ergebnis der zurück baos ist.

Die Datei öffnet korrekt in meinen Browser, aber es ist leer, nichts wurde kopiert.

zu Ihrer Information, es funktioniert gut, wenn ich einen physischen Pfad anstelle von ByteArrayOutputStream verwende, aber ich muss ein dynamisches Dokument in meiner Anwendung verwenden, so dass ein physischer Pfad keine Option ist.

Irgendeine Idee?

thx im Voraus

+0

Vielleicht sind Sie rasieren die Bytes wie hier erklärt: http://itext.2136553.n4.nabble.com/Blank-PDF-after-it-is-transfered-through-SMTP-td2228773. html Ohne das PDF zu sehen, können wir Ihnen nur wenig über dieses Problem erzählen. Wenn die Seiten vorhanden sind, aber der Inhalt der Seiten leer ist, ist Ihr Server so konfiguriert, dass er nur Text bereitstellt und keine Binärdaten liefern kann. –

Antwort

0

Thx Bruno Lowagie waren Sie mit der rechten über die Bytes Rasieren wie hier erklärt: http://itext.2136553.n4.nabble.com/Blank-PDF-after-it-is-transfered-through-SMTP-td2228773.html

nach den Link zu lesen, löste ich das Problem, indem die ByteArrayOutputStream in ein Byte-Umwandlung [] so hier ist der Code, den ich das Problem lösen musste sich ändern:

 byte[] pdf=result.toByteArray() 

    response.setContentType("application/octet-stream") 
       response.setHeader('Content-disposition', "attachment; filename=intercalaire.pdf") 
       response.outputStream << pdf 
       response.outputStream.flush() 
    result.close() 

jetzt funktioniert es gut

Thx wieder Bruno Lowagie

Verwandte Themen