[
https://issues.apache.org/jira/browse/PDFBOX-4540?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16837017#comment-16837017
]
Maruan Sahyoun commented on PDFBOX-4540:
----------------------------------------
ack - the change itself is useful. Understanding the use case might help us to
better understand what we might need to expose and what not. Using COSWriter
directly shouldn't be done by consumers of the lib IMHO
> 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: [email protected]
For additional commands, e-mail: [email protected]