Jonathan created PDFBOX-4541:
--------------------------------

             Summary: Incorrect? handling of direct/indirect objects
                 Key: PDFBOX-4541
                 URL: https://issues.apache.org/jira/browse/PDFBOX-4541
             Project: PDFBox
          Issue Type: Bug
          Components: Parsing, Writing
    Affects Versions: 2.0.14
            Reporter: Jonathan


We ran into some issues concerning blank pages in some of our resulting PDF 
documents. Investigation showed that some objects which were referenced were 
never actually written. We then noticed that these objects were never written 
because they missed the `isDirect` flag. We were able to mitigate this issue by 
adding
{code:java}
if (retval != null) {
    retval.setDirect(true);
}
return retval;
{code}
at the end of `BaseParser.parseDirObject()`.

While the pdfs were now displayed correctly, QPDFs check reported erroneous 
hint tables. The offsets there were calculated incorrectly because the objects 
were now written not only once, but, in fact, several times in places where 
they should have been merely referenced. We eventually resolved this issue by 
replacing the if-condiction
{code:java}
if (willEncrypt || incrementalUpdate || subValue instanceof COSDictionary || 
subValue == null)
{code}
in `COSWriter.visitFromArray(COSArray)` and 
`COSWriter.visitFromDictionay(COSDictionary)` with
{code:java}
if (willEncrypt || incrementalUpdate || subValue == null || !(subValue 
instanceof COSObject))
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to