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

Reply via email to