[
https://issues.apache.org/jira/browse/PDFBOX-2596?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14279904#comment-14279904
]
John Hewson edited comment on PDFBOX-2596 at 1/16/15 7:26 AM:
--------------------------------------------------------------
By not holding a reference to the PDDocument you created, it's impossible for
you to call close(). While we do call close() in the finalizer, it's [not
something you should rely
on|https://weblogs.java.net/blog/jfalkner/archive/2007/07/blarg27_dont_us.html].
You _must_ hold a reference to the PDDocument and call close() yourself.
The clearing of the objects which you noticed in COSDocument#close() has just
been fixed in the trunk by PDFBOX-2592, but that's not the issue here. When you
close a COSDocument (or the finalizer does it for you) then any COSStreams
obtained from it become unreadable, so your PDPage objects are unreadable - in
1.8 this gives you an NPE, but in the trunk it is now a proper IOException.
was (Author: jahewson):
By not holding a reference to the PDDocument you created, it's impossible for
you to call close(). While we do call close() in the finalizer, it's not
something you should rely on. -You _must_ hold a reference to the PDDocument
and call close() yourself.
The clearing of the objects which you noticed in COSDocument#close() has just
been fixed in the trunk by PDFBOX-2592, but that's not the issue here. When you
close a COSDocument (or the finalizer does it for you) then any COSStreams
obtained from it become unreadable, so your PDPage objects are unreadable - in
1.8 this gives you an NPE, but in the trunk it is now a proper IOException.
> NullPointerException in RandomAccessFileInputStream
> ---------------------------------------------------
>
> Key: PDFBOX-2596
> URL: https://issues.apache.org/jira/browse/PDFBOX-2596
> Project: PDFBox
> Issue Type: Bug
> Affects Versions: 1.8.8
> Reporter: John Roche
>
> Line 94 contains a synchronized(file) that throws a NullPointerException
> under some strange circumstances that I haven't been able to fully identify
> yet. I have downloaded the 1.8.8 source and the fix I used is simply to add
> "&& file != null" to the previous if statement.
> I can reproduce this bug with live user data, but I haven't been able to with
> test data yet. It happens when I try to create a pdf with 36 pages that have
> an image, some drawn coloured boxes and some text, on each page. If I remove
> some of the pages before I call save(File) it doesn't happen - depending on
> which pages I remove it can be ok with up to 26 pages, or break with fewer.
> Quite strange. I suspect it's to do with the size of the data as opposed to
> the number of pages.
> I will continue to investigate, since there seems to be some underlying
> issue, but for now I guess the null protection should be ok to add?
> Thanks,
> John
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)