[
https://issues.apache.org/jira/browse/PDFBOX-4540?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16836970#comment-16836970
]
Jonathan commented on PDFBOX-4540:
----------------------------------
Yes, basically that is what it is meant for. I guess we are indeed doing weird
and unusual stuff, but it makes more sense to use the infrastructure provided
by COSWriter (and the other subsystems we modified) than to just reimplement
everything by ourselves.
I reckon the currently exposed API is fine if all you do is using PDFBox 'as
is'. Right now we just find that it is really hard to modify the framework's
behaviour without either reimplementing entire subsystems or exposing
additional API.
> 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]