pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tilman Hausherr <THaush...@t-online.de>
Subject Re: How flatten without changing appearance
Date Tue, 15 Sep 2015 06:17:26 GMT
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 <sahyoun@fileaffairs.de>:
>>
>>
>>
>>> Am 14.09.2015 um 16:53 schrieb Kevin Ternes <KTernes@thegeneral.com>:
>>>
>>> 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:sahyoun@fileaffairs.de]
>>> Sent: Saturday, September 12, 2015 1:55 AM
>>> To: users@pdfbox.apache.org
>>> Subject: Re: How flatten without changing appearance
>>>
>>> Hi,
>>>
>>>> Am 12.09.2015 um 00:08 schrieb Kevin Ternes <KTernes@thegeneral.com>:
>>>>
>>>> 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:sahyoun@fileaffairs.de]
>>>> Sent: Friday, September 11, 2015 12:17 PM
>>>> To: users@pdfbox.apache.org
>>>> 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 <KTernes@thegeneral.com>:
>>>>>
>>>>> 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:sahyoun@fileaffairs.de]
>>>>> Sent: Friday, September 11, 2015 3:15 AM
>>>>> To: users@pdfbox.apache.org
>>>>> 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: users-unsubscribe@pdfbox.apache.org
>>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
>> For additional commands, e-mail: users-help@pdfbox.apache.org
>>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message