PdfBox无法导入页面

Jak*_*ila 8 pdfbox

我有以下代码

0. templatePage = (PDPage) PDDocument.load(file).getDocumentCatalog().getAllPages().get(0);
1. ...
2. document.importPage(templatePage); //first page
3. ... //draw stuff
4. document.importPage(templatePage); //next page
5. ...
Run Code Online (Sandbox Code Playgroud)

如果在第3行,我只画了一些东西,那么一切正常.但是,如果我画了很多东西,那么我得到:

Index: 12, Size: 0. Stacktrace follows:
java.lang.IndexOutOfBoundsException: Index: 12, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at org.apache.pdfbox.io.RandomAccessBuffer.seek(RandomAccessBuffer.java:84)
at org.apache.pdfbox.io.RandomAccessFileInputStream.read(RandomAccessFileInputStream.java:96)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at org.apache.pdfbox.pdmodel.PDDocument.importPage(PDDocument.java:654)
at xxx.PdfReport.breakPage(PdfReport.java:145)
at xxx.PdfReport.print(PdfReport.java:84)
Run Code Online (Sandbox Code Playgroud)

上面的代码在95%的情况下工作,只有当页面真的满时才会出现问题.

如果在第2行和第4行.我使用

 document.addPage(new PDPage());
Run Code Online (Sandbox Code Playgroud)

然后它工作正常.但目标是使用模板pdf.

Jak*_*ila 0

一个被黑的解决方案是:

每次使用前加载模板。确保模板文档不是 GCd。然后它就会起作用。

如果有人有官方解决方案请告诉我。