Am 15.09.2015 um 04:47 schrieb Maruan Sahyoun:
Hi Kevin,

I've created https://issues.apache.org/jira/browse/PDFBOX-2970 
<https://issues.apache.org/jira/browse/PDFBOX-2970> for that.

In addition you can start playing with that code based on the current PDFBox 
2.0.0 snapshot.



         PDDocument doc = PDDocument.load(new File(...));
         PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
// Iterate over all form fields and their widgets and create a
         // FormXObject at the page content level from that
         for (PDField field : acroForm.getFieldTree())
         {
             for (PDAnnotationWidget widget : 
((PDTerminalField)field).getWidgets())
             {
                 PDPage page = widget.getPage();
                 PDPageContentStream contentStream = new 
PDPageContentStream(doc, page, true, true);

I wasn't 100% sure what was meant with "flatten", but now I get it!

I think the first one of the "new PDPageContentStream" should have the fifth parameter and be true, in case the existing content stream isn't included in q...Q.

Tilman

                 PDFormXObject fieldObject = new 
PDFormXObject(widget.getAppearance().getNormalAppearance().getAppearanceStream().getCOSStream());
Matrix translationMatrix = Matrix.getTranslateInstance(widget.getRectangle().getLowerLeftX(), widget.getRectangle().getLowerLeftY());
                 contentStream.saveGraphicsState();
                 contentStream.transform(translationMatrix);
                 contentStream.drawForm(fieldObject);
                 contentStream.restoreGraphicsState();
                 contentStream.close();
             }
         }

         // preserve all non widget annotations
         for (PDPage page : doc.getPages())
         {
             List<PDAnnotation> annotations = new ArrayList<PDAnnotation>();
for (PDAnnotation annotation: page.getAnnotations())
             {
                 if (!(annotation instanceof PDAnnotationWidget))
                 {
                     annotations.add(annotation);
                 }
             }
             page.setAnnotations(annotations);
         }
// remove the fields
         acroForm.setFields(Collections.<PDField>emptyList());
doc.save(...);
         doc.close();


BR
Maruan



Am 14.09.2015 um 17:57 schrieb Maruan Sahyoun <[email protected]>:



Am 14.09.2015 um 16:53 schrieb Kevin Ternes <[email protected]>:

I am trying to refactor for 2.0.0-SNAPSHOT now.

Can someone tell me how to flatten a PDDocument in PDFBox 2 ?
All the examples seem to pertain to v1.x
there are non but I've started to get that into the project

-----Original Message-----
From: Maruan Sahyoun [mailto:[email protected]]
Sent: Saturday, September 12, 2015 1:55 AM
To: [email protected]
Subject: Re: How flatten without changing appearance

Hi,

Am 12.09.2015 um 00:08 schrieb Kevin Ternes <[email protected]>:

Maruan,
That would be great.  Please have a look at:
https://onedrive.live.com/redir?resid=9CCA324BE57ADA7!76929&authkey=!A
KE0x0fh5QDkIIw&ithint=file%2czip This should demonstrate the problem
by processing several files.
I took a quick look. Which version of PDFBox are you using? Would it be 
possible to go to (the yet to be released) 2.0.0 version?

BR
Maruan


The users complaint is: Boxes are being greyed out and font sizes are being 
changed by the flatten.
My flatten is done by the PDFBoxUtils.flatten() method.

Thanks,
-Kevin

-----Original Message-----
From: Maruan Sahyoun [mailto:[email protected]]
Sent: Friday, September 11, 2015 12:17 PM
To: [email protected]
Subject: Re: How to merge forms where there is

how urgent is it for you? If you could share a sample file and your code for 
flattening I could take a look.

BR
Maruan

Am 11.09.2015 um 18:23 schrieb Kevin Ternes <[email protected]>:

I have not been able to successfully flatten a document without affecting the 
formatting of the field.
There are some example codes out there but none of them work correctly for me.

-----Original Message-----
From: Maruan Sahyoun [mailto:[email protected]]
Sent: Friday, September 11, 2015 3:15 AM
To: [email protected]
Subject: Re: How to merge forms where there is

Hi Kevin
None of these field values will need to be changed afterward the merge.  They 
are set to read-only.
I tried flattening the source fields but most of these documents rely on field 
annotation for the field value formatting and this is not to be changed.
when a field is flattened correctly the formatting of the annotations visually 
representing the field become part of the page content stream. So if you don't 
need the fields at all - as there is no further input - you could flatten the 
source documents prior to merging them.


---------------------------------------------------------------------
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]




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

Reply via email to