[
https://issues.apache.org/jira/browse/PDFBOX-3924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16156799#comment-16156799
]
Maruan Sahyoun commented on PDFBOX-3924:
----------------------------------------
# if you call 'PDAcroForm.flatten()' then PDFBox will try to generate the
fields visual content (the appearance stream) for you leading to the 'U+xxxx is
not available in this font's encoding: ... ' error message (which will also
happen when you set the fields value as this will also generate the individual
fields appearance
# if you'd like to let Adobe Reader generate the appearance for you by using
'setNeedAppearances' then you can not call 'flatten' as this will (even if it
succeeded) remove the form fields and field annotations, so there is no longer
any content Adobe Reader needs to generate the appearance for
Before we have complex script support in PDFBox unfortunately there is not much
we can do.
> How to flatten pdf which contains acroform fields
> --------------------------------------------------
>
> Key: PDFBOX-3924
> URL: https://issues.apache.org/jira/browse/PDFBOX-3924
> Project: PDFBox
> Issue Type: Improvement
> Components: AcroForm
> Affects Versions: 2.0.7
> Environment: Windows 10
> Reporter: Subrata Kumar Pradhan
> Priority: Critical
> Fix For: 2.0.7
>
> Attachments: CPIS_test_language.pdf
>
>
> After set the value in the acroForm fields, i want to flatten the pdf. so
> that there should not be any form fields in my output pdf and when i am
> writing acroForm.flatten() it's not working.
> Here is my java code:
> {code}
> package com.sdrc.image;
> import java.io.File;
> import java.util.List;
> import org.apache.pdfbox.pdmodel.PDDocument;
> import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
> import org.apache.pdfbox.pdmodel.interactive.form.PDField;
> public class PDFBoxLanguageTest {
> public static void main(String[] args) throws Exception {
>
> String formTemplate =
> "C:/Users/XXXX/Downloads/CPIS_test_language.pdf";
> PDDocument pdfDocument = PDDocument.load(new File(formTemplate));
> PDAcroForm acroForm =
> pdfDocument.getDocumentCatalog().getAcroForm();
> acroForm.setNeedAppearances(true); //need this line for Hindi
>
> if (acroForm != null) {
> // Get field names
> List<PDField> fieldList = acroForm.getFields();
> for (PDField pdField : fieldList) {
> if (pdField.getFullyQualifiedName().equals("Text1")){
> // Here i am passing a text in "English"
>
> acroForm.getField(pdField.getFullyQualifiedName()).setValue("Welcome");
> //pdField.setReadOnly(true);// not working
> //pdField.getCOSObject().setInt("FF", 1);// not
> working
> } else if (pdField.getFullyQualifiedName().equals("Text3"))
> {
> // Here i am passing a text in "English-Hindi"
>
> acroForm.getField(pdField.getFullyQualifiedName()).setValue("Welcome-नमस्ते");
>
> //pdField.setReadOnly(true);// not working
> //pdField.getCOSObject().setInt("FF", 1);// not
> working
> } else {
> // Here i am passing a text in "Hindi"
>
> acroForm.getField(pdField.getFullyQualifiedName()).setValue("नमस्ते");
> //pdField.setReadOnly(true);// not working
> //pdField.getCOSObject().setInt("FF", 1);// not
> working
> }
> }
> }
> // acroForm.flatten(); // not working
>
> pdfDocument.save("C:/Users/XXXX/Downloads/CPIS_test_languageE.pdf");
> // acroForm.flatten(); // not working
> pdfDocument.close();
> System.out.println("Done");
>
> System.out.println("============================================");
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]