Don't know, but there is this issue about a similar wish:
https://issues.apache.org/jira/browse/PDFBOX-2400

Tilman

Am 17.02.2015 um 22:27 schrieb Ilya Kantor:
Hi Maruan,

Thanks, you were very precise, that's my fault to close the thing twice.
Now it works.

Can I insert the new page as the first one?

For PDFBox 1.8.8 did it this way:
======
doc.getDocumentCatalog().getPages().getKids().add(0, (PDPage)
cover.getDocumentCatalog().getAllPages().get(0));
========

---
Best Regards,
Ilya Kantor

2015-02-18 0:16 GMT+03:00 Maruan Sahyoun <[email protected]>:

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 <[email protected]>:

try closing the coverDoc after you've saved doc.

BR
Maruan

Am 17.02.2015 um 22:00 schrieb Ilya Kantor <[email protected]>:

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: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to