pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Maruan Sahyoun <sahy...@fileaffairs.de>
Subject Re: The importPage leads to error in PDFBox 2.0.0
Date Tue, 17 Feb 2015 21:16:34 GMT

> Maruan also meant to tell you not to close coverDoc before saving :-)
> 

thx Tilman - as usual I wasn't precise enough :-)


> Tilman
> 
> Am 17.02.2015 um 22:08 schrieb Ilya Kantor:
>> Hi,
>> 
>> Still getting the error
>> 
>> That's the updated code:
>> =================
>> PDDocument doc = PDDocument.load(inputFile);
>> PDDocument coverDoc = null;
>> 
>> if (coverFile != null) {
>>     coverDoc = PDDocument.load(coverFile);
>>     PDPage coverPage = coverDoc.getPage(0);
>>     doc.addPage(coverPage);
>>     coverDoc.close();          <===================================================
>> }
>> 
>> PDDocumentOutline outline = new PDDocumentOutline();
>> // ...
>> doc.getDocumentCatalog().setDocumentOutline(outline);
>> 
>> doc.save(outputFile);
>> if (coverDoc != null) coverDoc.close();
>> =================
>> 
>> I'm getting the error in doc.save():
>> =================
>> Exception in thread "main" java.io.IOException: COSStream has been closed
>> and cannot be read. Perhaps its enclosing PDDocument has been closed?
>>   at org.apache.pdfbox.cos.COSStream.getFilteredStream(COSStream.java:163)
>>   at
>> org.apache.pdfbox.pdfwriter.COSWriter.visitFromStream(COSWriter.java:1151)
>>   at org.apache.pdfbox.cos.COSStream.accept(COSStream.java:298)
>>   at org.apache.pdfbox.cos.COSObject.accept(COSObject.java:156)
>>   at org.apache.pdfbox.pdfwriter.COSWriter.doWriteObject(COSWriter.java:542)
>>   at org.apache.pdfbox.pdfwriter.COSWriter.doWriteBody(COSWriter.java:449)
>>   at
>> org.apache.pdfbox.pdfwriter.COSWriter.visitFromDocument(COSWriter.java:1035)
>>   at org.apache.pdfbox.cos.COSDocument.accept(COSDocument.java:464)
>>   at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1312)
>>   at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1220)
>>   at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:950)
>>   at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:922)
>>   at PdfBookPolisher.run(PdfBookPolisher.java:129)
>>   at PdfBookPolisher.main(PdfBookPolisher.java:69)
>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>   at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>   at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>   at java.lang.reflect.Method.invoke(Method.java:606)
>>   at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
>> ================
>> 
>> ---
>> Best Regards,
>> Ilya Kantor
>> 
>> 2015-02-18 0:05 GMT+03:00 Maruan Sahyoun <sahyoun@fileaffairs.de>:
>> 
>>> try closing the coverDoc after you've saved doc.
>>> 
>>> BR
>>> Maruan
>>> 
>>> Am 17.02.2015 um 22:00 schrieb Ilya Kantor <iliakan@gmail.com>:
>>> 
>>>> Hi,
>>>> 
>>>> I'm trying to import a page from one document into another one and
>>> getting
>>>> an error with PDFBox 2.0.0 snapshot.
>>>> 
>>>> That's the code:
>>>> ==================
>>>> PDDocument doc = PDDocument.load(inputFile);
>>>> 
>>>> if (coverFile != null) {
>>>>    PDDocument coverDoc = PDDocument.load(coverFile);
>>>>    PDPage coverPage = coverDoc.getPage(0);
>>>>    doc.importPage(coverPage);
>>>>    coverDoc.close();
>>>> }
>>>> 
>>>> PDDocumentOutline outline = new PDDocumentOutline();
>>>> // ... I'm also working with the outline
>>>> doc.getDocumentCatalog().setDocumentOutline(outline);
>>>> 
>>>> doc.save(outputFile);
>>>> =================
>>>> 
>>>> And here's the error when saving (the last line):
>>>> 
>>>> ================
>>>> Exception in thread "main" java.io.IOException: COSStream has been closed
>>>> and cannot be read. Perhaps its enclosing PDDocument has been closed?
>>>> at org.apache.pdfbox.cos.COSStream.getFilteredStream(COSStream.java:163)
>>>> at
>>>> 
>>> org.apache.pdfbox.pdfwriter.COSWriter.visitFromStream(COSWriter.java:1151)
>>>> at org.apache.pdfbox.cos.COSStream.accept(COSStream.java:298)
>>>> at org.apache.pdfbox.cos.COSObject.accept(COSObject.java:156)
>>>> at
>>> org.apache.pdfbox.pdfwriter.COSWriter.doWriteObject(COSWriter.java:542)
>>>> at org.apache.pdfbox.pdfwriter.COSWriter.doWriteBody(COSWriter.java:449)
>>>> at
>>>> 
>>> org.apache.pdfbox.pdfwriter.COSWriter.visitFromDocument(COSWriter.java:1035)
>>>> at org.apache.pdfbox.cos.COSDocument.accept(COSDocument.java:464)
>>>> at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1312)
>>>> at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1220)
>>>> at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:950)
>>>> at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:922)
>>>> at PdfBookPolisher.run(PdfBookPolisher.java:128)
>>>> at PdfBookPolisher.main(PdfBookPolisher.java:69)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> 
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> 
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
>>>> ======
>>>> 
>>>> The problem does not happen when I do not import page.
>>>> 
>>>> P.S. Can I insert the new page as the first one, not the last one?
>>>> Something like doc.getDocumentCatalog().getPages().getKids().add(0,
>>>> (PDPage) cover.getDocumentCatalog().getAllPages().get(0));
>>>> But for 2.0.0.
>>>> 
>>>> 
>>>> ---
>>>> Best Regards,
>>>> Ilya Kantor
>>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> For additional commands, e-mail: users-help@pdfbox.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message