Hi,

> Am 01.08.2016 um 15:54 schrieb David Hill <[email protected]>:
> 
> John,
> 
> The bug does still exist, hence my continued need to override the class in 
> question.
> 
> "Subclassing huge swathes of internal code" gets the job done without waiting 
> for a future release. Making it harder for users to work around issues might 
> increase patch submission but doesn't sound like the best overall solution.
> 
> The bug is that when merging two PDFs, if the first PDF doesn't have any tags 
> and the second one does, tags are lost. Tags are a critical feature for 508 
> compliance.
> 

from your description you have issues when merging tags. But you are also 
changing the code to merge AcroForms. So are you having issues with both parts?

BR
Maruan

> I don't have a patch, and I haven't fixed the latest version yet, but from 
> version 1.8.6 your code from PDFMergerUtility.appendDocument line 327 that 
> looks like this
> 
>            PDAcroForm destAcroForm = destCatalog.getAcroForm();
>            PDAcroForm srcAcroForm = srcCatalog.getAcroForm();
>            if (destAcroForm == null)
>            {
>                cloner.cloneForNewDocument(srcAcroForm);
>                destCatalog.setAcroForm(srcAcroForm);
>            }
> 
> we changed to this
> 
>            PDAcroForm destAcroForm = destCatalog.getAcroForm();
>            PDAcroForm srcAcroForm = srcCatalog.getAcroForm();
>            if (srcAcroForm != null && destAcroForm == null)
>            {
>                destAcroForm = new PDAcroForm(destination);
>                PDResources res = new PDResources();
>                destAcroForm.setDefaultResources(res);
>                destination.getDocumentCatalog().setAcroForm(destAcroForm);
> 
>                cloner.cloneForNewDocument(srcAcroForm);
>                mergeAcroForm(cloner, destAcroForm, srcAcroForm);
>            }
> 
> 
> and line 554 which was
> 
>            kDictLevel0.setItem(COSName.K, newKArray);
>            kDictLevel0.setItem(COSName.P, destStructTree);
>            kDictLevel0.setItem(COSName.S, new 
> COSString(STRUCTURETYPE_DOCUMENT));
>            destStructTree.setK(kDictLevel0);
> 
> we apparently changed to
> 
>            //Kids of source document (insert)
>            List<Object> addKids = srcStructTree.getKids();
>            for (Object k : addKids) {
>                ((PDStructureElement) k).setParent(destStructTree);
>                destStructTree.appendKid((PDStructureElement) k);
>            }
> 
> 
> I did not make the original changes and I have not yet attempted to correct 
> version 2.0.2 but without these changes we have failing tests looking for 
> tags and have verified the output files are missing tags.
> 
> Thank you.
> Dave
> 
> _____________________
> 
> ___________________
> From: John Hewson [[email protected]]
> Sent: Saturday, July 30, 2016 2:47 AM
> To: [email protected]
> Subject: {External}  Re: upgrading to 2.x - package private class 
> PDFieldFactory?
> 
>> On 29 Jul 2016, at 06:09, David Hill <[email protected]> wrote:
>> 
>> 
>> I am upgrading a project from 1.8.6 to the 2.0.2 version of PDFBox and 
>> everything went reasonably well except that we made use of PDFieldFactory
>> 
>> PDField destField = PDFieldFactory.createField
>> 
>> Everything in PDFieldFactory used to be public but now it is all package 
>> private.
>> 
>> I tried to copy the code for that method into our project and found that all 
>> of the various PDField objects being created were also package private.
>> 
>> It looks like the code we have came from overriding and copying 
>> PDFMergerUtility.appendDocument to fix an apparent bug. 
>> PDFMergerUtility.appendDocument makes a call to PDFieldFactory.createField.
>> 
>> I could continue to force my way around this issue but I have to wonder if 
>> this was intentional.
> 
> Yep. Subclassing huge swathes of internal code isn't a great solution to 
> fixing a bug in an open source project. We'd happily take a patch for the bug 
> if it still exists.
> 
> -- John
> 
>> 
>> Dave
> 
> ________________________________
> 
> This e-mail and any files transmitted with it are confidential and intended 
> solely for the use of the individual or entity to whom they are addressed. If 
> you have received this e-mail in error please notify the originator of the 
> message. This footer also confirms that this e-mail message has been scanned 
> for the presence of computer viruses. Any views expressed in this message are 
> those of the individual sender, except where the sender specifies and with 
> authority, states them to be the views of Iowa Student Loan.
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 


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

Reply via email to