[ https://issues.apache.org/jira/browse/PDFBOX-4540?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16837012#comment-16837012 ]
Tilman Hausherr commented on PDFBOX-4540: ----------------------------------------- I'm doing the change anyway (unless there's a specific reason not to, or a specific reason why it is what it is now), the reason being that if the COSObject is already in the {{objectKeys}} map, then we shouldn't get a new key. At first this is just one line added, but after refactoring, it ends like the proposed changed. > COSWriter sometimes retrieves wrong ObjectKey > --------------------------------------------- > > Key: PDFBOX-4540 > URL: https://issues.apache.org/jira/browse/PDFBOX-4540 > Project: PDFBox > Issue Type: Bug > Components: Writing > Affects Versions: 2.0.14 > Reporter: Jonathan > Priority: Major > Labels: patch, pull-request-available > Attachments: sample.pdf > > > If a COSBase is directly embedded in a COSObject, it should not be assigned a > new object number by the writer. We suggest the following implementation for > `COSWriter.getObjectKey(COSBase)`: > {code:java} > /** > * This will get the object key for the object. > * > * @param obj The object to get the key for. > * > * @return The object key for the object. > */ > protected COSObjectKey getObjectKey( COSBase obj ) > { > COSBase actual = obj; > if( actual instanceof COSObject ) > { > actual = ((COSObject)obj).getObject(); > } > COSObjectKey key = null; > key = objectKeys.get(obj); > if( key == null && actual != null ) > { > key = objectKeys.get(actual); > } > if (key == null) > { > setNumber(getNumber()+1); > key = new COSObjectKey(getNumber(),0); > objectKeys.put(obj, key); > if( actual != null ) > { > objectKeys.put(actual, key); > } > } > return key; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org