yes, Paulo, you are right
Thank you very much!
Jianwei
On Tue, Feb 9, 2010 at 3:19 PM, Paulo Soares <[email protected]> wrote:
> 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/
>
------------------------------------------------------------------------------
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/