[ https://issues.apache.org/jira/browse/PDFBOX-4066?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maruan Sahyoun resolved PDFBOX-4066. ------------------------------------ Resolution: Fixed I'm resolving this as the bug itself has been resolved. For the enhancements to merging AcroForms please see PDFBOX-3111. [~mkl] [~joeeoj] I've added you as a watcher there. Thanks for your input. > Merging documents with nested fields duplicates child fields > ------------------------------------------------------------ > > Key: PDFBOX-4066 > URL: https://issues.apache.org/jira/browse/PDFBOX-4066 > Project: PDFBox > Issue Type: Bug > Components: AcroForm, Utilities > Affects Versions: 2.0.8 > Reporter: Al Phaba > Assignee: Maruan Sahyoun > Priority: Major > Fix For: 2.0.9, 3.0.0 PDFBox > > Attachments: TestForm-flattened.pdf, TestForm-merged.pdf, > TestForm.pdf, flattenAndMerge.pdf > > > I have a pdf with a lot of acroforms, I do some manipulation on it which > results in a new pdf. So I have PDF-1 (which is the original one )and PDF-2 > (just a duplication of PDF-1), now I want to merge them. Both PDFs have some > acroforms for example: field_a, field_2... > Before I merge them I flatten PDF-1, because I only want to have acrofields > from PDF-2. When I check then my new merged PDF I can see that there are no > visible fields on on the pages from PDF-1 and there are fields on pages of > fields of PDF-2. At the first look it seems ok, but when I inspect the fields > I can see that the merger has renamed all the fields for PDF-2 e.g. > field_a_dummy123, field_b_dummy232 ... > It seems to me, that flattening does not remove the fields and thats why the > PDFMerger from PDFBox will rename the fields for PDF-2 because acrofields > need to be unique.Another guess was that there is a bug in mergeAcroForm() > > {code:java} > @Test > public void flattenAndMerge() throws IOException { > File testForm = new > File(classLoader.getResource("./TestForm.pdf").getFile()); > byte[] testFormAsByte = Files.readAllBytes(testForm.toPath()); > byte[] testFormAsByte2 = Files.readAllBytes(testForm.toPath()); > PDDocument pdf1 = PDDocument.load(testFormAsByte); > PDAcroForm acroform = pdf1.getDocumentCatalog().getAcroForm(); > acroform.flatten(); > Path flattendedPdf = Files.createTempFile("flatten", ".pdf"); > pdf1.save(flattendedPdf.toFile()); > PDFMergerUtility merger = new PDFMergerUtility(); > merger.addSource(new > ByteArrayInputStream(Files.readAllBytes(flattendedPdf))); > merger.addSource(new ByteArrayInputStream(testFormAsByte2)); > merger.setDestinationFileName("./build/flattenAndMerge.pdf"); > merger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly()); > } > {code} > Here is my SO Article > [https://stackoverflow.com/questions/48271924/pdfbox-flatten-pdf-does-not-remove-acroform-elements?noredirect=1#comment83544858_48271924] > > -- 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