Example usage for com.lowagie.text.pdf FdfReader FdfReader

List of usage examples for com.lowagie.text.pdf FdfReader FdfReader

Introduction

In this page you can find the example usage for com.lowagie.text.pdf FdfReader FdfReader.

Prototype

public FdfReader(InputStream is) throws IOException 

Source Link

Document

Reads an FDF form.

Usage

From source file:com.servoy.extensions.plugins.pdf_output.PDFProvider.java

License:Open Source License

/**
 * Convert a protected PDF form to a PDF document.
 *
 * @sample//  w w w  .  j  av  a  2  s .  c  o  m
 * var pdfform = plugins.file.readFile('c:/temp/1040a-form.pdf');
 * //var field_values = plugins.file.readFile('c:/temp/1040a-data.fdf');//read adobe fdf values or
 * var field_values = new Array()//construct field values
 * field_values[0] = 'f1-1=John C.J.'
 * field_values[1] = 'f1-2=Longlasting'
 * var result_pdf_doc = plugins.pdf_output.convertProtectedPDFFormToPDFDocument(pdfform, 'pdf_password', field_values)
 * if (result_pdf_doc != null)
 * {
 *    plugins.file.writeFile('c:/temp/1040a-flatten.pdf', result_pdf_doc)
 * }
 *
 * @param pdf_form the PDF Form to convert
 * @param pdf_password the password to use
 * @param field_values the field values to use
 */
public byte[] js_convertProtectedPDFFormToPDFDocument(byte[] pdf_form, String pdf_password,
        Object field_values) {
    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PdfReader reader = new PdfReader(pdf_form, pdf_password != null ? pdf_password.getBytes() : null);
        PdfStamper stamp = new PdfStamper(reader, baos);
        if (field_values != null) {
            AcroFields form = stamp.getAcroFields();
            if (field_values instanceof String) {
                FdfReader fdf = new FdfReader((String) field_values);
                form.setFields(fdf);
            } else if (field_values instanceof byte[]) {
                FdfReader fdf = new FdfReader((byte[]) field_values);
                form.setFields(fdf);
            } else if (field_values instanceof Object[]) {
                for (int i = 0; i < ((Object[]) field_values).length; i++) {
                    Object obj = ((Object[]) field_values)[i];
                    if (obj instanceof Object[]) {
                        Object[] row = (Object[]) obj;
                        if (row.length >= 2) {
                            Object field = row[0];
                            Object value = row[1];
                            if (field != null && value != null) {
                                form.setField(field.toString(), value.toString());
                            }
                        }
                        //                     else if (row.length >= 3)
                        //                     {
                        //                            form.setField(field, value);
                        //                     }
                    } else if (obj instanceof String) {
                        String s = (String) obj;
                        int idx = s.indexOf('=');
                        form.setField(s.substring(0, idx), s.substring(idx + 1));
                    }
                }
            }
        }
        stamp.setFormFlattening(true);
        stamp.close();
        return baos.toByteArray();
    } catch (Exception e) {
        Debug.error(e);
        throw new RuntimeException("Error converting pdf form to pdf document", e); //$NON-NLS-1$
    }
}