I don't know if you noticed in the example but the fields are being filled 
when they are created, just get the values from your database.

Paulo

----- Original Message ----- 
From: "Jianwei Sun" <[email protected]>
To: <[email protected]>
Sent: Tuesday, February 09, 2010 8:10 PM
Subject: [iText-questions] what's the best way to generate and fill in a 
pdfdocument at the same time.


Hello, Dear members.

I have a question regarding how to generate the pdf document, insert a 
couple of text fields, and then fill in those text fields from a database at 
the same time.

Here is a good example 
(http://itextpdf.com/examples/index.php?page=example&id=157) on how to 
create and fill in a form.

But I don't want the intermediate file, I just want to create the pdf file, 
and fill in the fields in memory, and then send it to the client over Http , 
what's the best way to do it? Basically, I want to get the AcroFields from 
the writer, not from the reader.

Thank you for your help.






public class TextFields implements 
PdfPCellEvent<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCellEvent.html> 
{

    public static final String RESULT1 = 
"results/part2/chapter08/text_fields.pdf";
    public static final String RESULT2 = 
"results/part2/chapter08/text_filled.pdf";

    protected int tf;

    public static void main(String[] args) throws 
DocumentException<http://api.itextpdf.com/com/itextpdf/text/DocumentException.html>,
 
IOException {
        TextFields example = new TextFields(0);
        example.createPdf(RESULT1);
        example.manipulatePdf(RESULT1, RESULT2);
    }

    public TextFields(int tf) {
        this.tf = tf;
    }

    public void manipulatePdf(String src, String dest) throws IOException, 
DocumentException<http://api.itextpdf.com/com/itextpdf/text/DocumentException.html>
 
{
        PdfReader<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfReader.html> 
reader = new 
PdfReader<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfReader.html>(src);
        
PdfStamper<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfStamper.html> 
stamper = new 
PdfStamper<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfStamper.html>(reader,
 
new FileOutputStream(dest));
        
AcroFields<http://api.itextpdf.com/com/itextpdf/text/pdf/AcroFields.html> 
form = stamper.getAcroFields();
        form.setField("text_1", "Bruno Lowagie");
        form.setFieldProperty("text_2", "fflags", 0, null);
        form.setFieldProperty("text_2", "bordercolor", 
BaseColor<http://api.itextpdf.com/com/itextpdf/text/BaseColor.html>.RED, 
null);
        form.setField("text_2", "bruno");
        form.setFieldProperty("text_3", "clrfflags", 
TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>.PASSWORD,
 
null);
        form.setFieldProperty("text_3", "setflags", 
PdfAnnotation<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfAnnotation.html>.FLAGS_PRINT,
 
null);
        form.setField("text_3", "12345678", "xxxxxxxx");
        form.setFieldProperty("text_4", "textsize", new Float(12), null);
        form.regenerateField("text_4");
        stamper.close();
    }

    /**
     * Creates a PDF document.
     * @param filename the path to the new PDF document
     * @throws    DocumentException
     * @throws    IOException
     */
    public void createPdf(String filename) throws 
DocumentException<http://api.itextpdf.com/com/itextpdf/text/DocumentException.html>,
 
IOException {
        Document<http://api.itextpdf.com/com/itextpdf/text/Document.html> 
document = new 
Document<http://api.itextpdf.com/com/itextpdf/text/Document.html>();
        
PdfWriter<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfWriter.html>.getInstance(document,
 
new FileOutputStream(filename));
        document.open();

        PdfPCell<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCell.html> 
cell;
        PdfPTable<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPTable.html> 
table = new 
PdfPTable<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPTable.html>(2);
        table.setWidths(new int[]{ 1, 2 });

        table.addCell("Name:");
        cell = new 
PdfPCell<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCell.html>();
        cell.setCellEvent(new TextFields(1));
        table.addCell(cell);

        table.addCell("Loginname:");
        cell = new 
PdfPCell<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCell.html>();
        cell.setCellEvent(new TextFields(2));
        table.addCell(cell);

        table.addCell("Password:");
        cell = new 
PdfPCell<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCell.html>();
        cell.setCellEvent(new TextFields(3));
        table.addCell(cell);

        table.addCell("Reason:");
        cell = new 
PdfPCell<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCell.html>();
        cell.setCellEvent(new TextFields(4));
        cell.setFixedHeight(60);
        table.addCell(cell);

        document.add(table);

        document.close();

    }

    public void 
cellLayout(PdfPCell<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCell.html>
 
cell, Rectangle<http://api.itextpdf.com/com/itextpdf/text/Rectangle.html> 
rectangle, 
PdfContentByte<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfContentByte.html>[]
 
canvases) {
        PdfWriter<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfWriter.html> 
writer = canvases[0].getPdfWriter();
        TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html> 
text = new 
TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>(writer, 
rectangle,
                String.format("text_%s", tf));
        text.setBackgroundColor(new 
GrayColor<http://api.itextpdf.com/com/itextpdf/text/pdf/GrayColor.html>(0.75f));
        switch(tf) {
        case 1:
            
text.setBorderStyle(PdfBorderDictionary<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfBorderDictionary.html>.STYLE_BEVELED);
            
text.setAlignment(Element<http://api.itextpdf.com/com/itextpdf/text/Element.html>.ALIGN_RIGHT);
            text.setText("Enter your name here...");
            text.setFontSize(0);
            
text.setAlignment(Element<http://api.itextpdf.com/com/itextpdf/text/Element.html>.ALIGN_CENTER);
            
text.setOptions(TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>.REQUIRED);
            break;
        case 2:
            text.setMaxCharacterLength(8);
            
text.setOptions(TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>.COMB);
            
text.setBorderStyle(PdfBorderDictionary<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfBorderDictionary.html>.STYLE_SOLID);
            
text.setBorderColor(BaseColor<http://api.itextpdf.com/com/itextpdf/text/BaseColor.html>.BLUE);
            text.setBorderWidth(2);
            break;
        case 3:
            
text.setBorderStyle(PdfBorderDictionary<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfBorderDictionary.html>.STYLE_INSET);
            
text.setOptions(TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>.PASSWORD);
            
text.setVisibility(TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>.VISIBLE_BUT_DOES_NOT_PRINT);
            break;
        case 4:
            
text.setBorderStyle(PdfBorderDictionary<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfBorderDictionary.html>.STYLE_DASHED);
            
text.setBorderColor(BaseColor<http://api.itextpdf.com/com/itextpdf/text/BaseColor.html>.RED);
            text.setBorderWidth(2);
            text.setFontSize(8);
            text.setText("Enter the reason why you want to win a free 
accreditation for the Foobar Film Festival");
            
text.setOptions(TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>.MULTILINE
 
| 
TextField<http://api.itextpdf.com/com/itextpdf/text/pdf/TextField.html>.REQUIRED);
            break;
        }
        try {
            
PdfFormField<http://api.itextpdf.com/com/itextpdf/text/pdf/PdfFormField.html> 
field = text.getTextField();
            if (tf == 3) {
                field.setUserName("Choose a password");
            }
            writer.addAnnotation(field);
        }
        catch(IOException ioe) {
            throw new 
ExceptionConverter<http://api.itextpdf.com/com/itextpdf/text/ExceptionConverter.html>(ioe);
        }
        
catch(DocumentException<http://api.itextpdf.com/com/itextpdf/text/DocumentException.html>
 
de) {
            throw new 
ExceptionConverter<http://api.itextpdf.com/com/itextpdf/text/ExceptionConverter.html>(de);
        }
    }
}


------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php
Check the site with examples before you ask questions: 
http://www.1t3xt.info/examples/
You can also search the keywords list: http://1t3xt.info/tutorials/keywords/

Reply via email to