Hi Bruno,
Now I'm confused by adding radio buttons on different page.
I want name1(text), preferred1(radio) on 1st page, name2 and
preferred2(radio) on 2nd page. I also want to use a cool looking checkbox
instead of big X. (I can make big X checkboxes working, but not the
following code.) Could you help me? Really appriciate.
******************************************************
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PdfAnnotation;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfFormField;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPCellEvent;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.TextField;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.RadioCheckField;
import com.lowagie.text.pdf.BaseField;
import java.awt.Color;
import com.lowagie.text.ExceptionConverter;
public class Form2pages implements PdfPCellEvent {
protected PdfFormField kid;
protected float padding;
protected int pageNo;
protected String fieldName;
protected String fieldValue;
protected String fieldType;
protected PdfWriter writer;
public Form2pages(PdfWriter writer, PdfFormField kid, String
fieldName,
String fieldValue, String fieldType, int pageNo) {
this.kid = kid;
this.fieldName = fieldName;
this.fieldValue = fieldValue;
this.fieldType = fieldType;
this.writer = writer;
this.pageNo = pageNo;
}
public void cellLayout(PdfPCell cell, Rectangle rect,
PdfContentByte[] cb) {
if(fieldType.equalsIgnoreCase("text")){
kid.setWidget(new Rectangle(rect.getLeft(padding),
rect.getBottom(padding),
rect.getRight(padding),
rect.getTop(padding)),
PdfAnnotation.HIGHLIGHT_INVERT);
}else if(fieldType.equalsIgnoreCase("check")){
float llx = rect.getLeft() + ( (rect.getRight() -
rect.getLeft()) / 2f) - 5f;
float lly = rect.getBottom() + ( (rect.getTop() -
rect.getBottom()) / 2f) - 5f;
try {
RadioCheckField rf = new RadioCheckField(writer, new
Rectangle(llx, lly, llx + 10, lly + 10), fieldName, fieldValue);
rf.setCheckType(RadioCheckField.TYPE_CHECK);
rf.setBorderWidth(BaseField.BORDER_WIDTH_THIN);
rf.setBorderColor(Color.black);
rf.setBackgroundColor(Color.white);
rf.setChecked(true);
PdfFormField ff = rf.getCheckField();
ff.setPlaceInPage(pageNo);
kid.addKid(ff);
} catch (Exception e) {
throw new ExceptionConverter(e);
}
}
}
public static void main(String[] args) {
createPdf();
try { PdfReader reader;
PdfStamper stamper;
reader = new
PdfReader("C:/_Jbuilder2005Webs/Form2pages.pdf");
stamper = new PdfStamper(reader, new
FileOutputStream( "C:/_Jbuilder2005Webs/Form2pages_data.pdf"));
AcroFields form = stamper.getAcroFields();
form.setField("person.name1", "hello");
form.setField("person.preferred1","English");
form.setField("person.name2", "Sarah");
form.setField("person.preferred2","French");
stamper.close();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void createPdf() {
Document document = new Document();
try {
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream("C:/_Jbuilder2005Webs/Form2pages.pdf"));
document.open();
PdfFormField person =
PdfFormField.createEmpty(writer);
person.setFieldName("person");
// name1 on 1st page
TextField field1 = new TextField(writer, new
Rectangle(0, 0), "name1");
PdfFormField kid_name1 = field1.getTextField();
kid_name1.setPlaceInPage(1);
person.addKid(kid_name1);
// preferred1 on 1st page
String[] checkboxLabels = {"English","French"};
PdfFormField kid_preferred1 =
PdfFormField.createRadioButton(writer, true);
kid_preferred1.setFieldName("preferred1");
kid_preferred1.setPlaceInPage(1);
person.addKid(kid_preferred1);
// name2 on 2nd page
TextField field2 = new TextField(writer, new
Rectangle(0, 0), "name2");
PdfFormField kid_name2 = field2.getTextField();
kid_name2.setPlaceInPage(2);
person.addKid(kid_name2);
// preferred2 on 2nd page
PdfFormField kid_preferred2 =
PdfFormField.createRadioButton(writer, true);
kid_preferred2.setFieldName("preferred2");
kid_preferred2.setPlaceInPage(2);
person.addKid(kid_preferred2);
writer.addAnnotation(person);
document.add(createTextTable(null,
kid_name1,null,"Your Name1:", 30, 1));
document.add(createCheckTable(writer,
kid_preferred1,"preferred1", checkboxLabels, 80, 1));
document.newPage();
document.add(createTextTable(null,
kid_name2,null,"Your Name2", 30, 2));
document.add(createCheckTable(writer,
kid_preferred2,"preferred2", checkboxLabels, 80, 2));
} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
}
document.close();
}
private static PdfPTable createTextTable(PdfWriter writer,
PdfFormField kid,
String fieldStr,
String label, int
kid_height,
int pageNo)
throws IOException, DocumentException {
PdfPTable table = new PdfPTable(2);
table.setTotalWidth(540f);
table.addCell(label);
PdfPCell cell = new PdfPCell();
cell.setFixedHeight(kid_height);
cell.setCellEvent(new Form2pages(writer, kid, null, null,
"text", pageNo));
table.addCell(cell);
return table;
}
private static PdfPTable createCheckTable(PdfWriter writer,
PdfFormField kid,
String fieldName,
String[] checkboxLabels,
int kid_height,
int pageNo)
throws IOException, DocumentException {
PdfPTable table = new PdfPTable(2);
table.setTotalWidth(540f);
table.addCell("Preferred Language:");
PdfPTable subtable = new PdfPTable(new float[]{4,10});
for(int i=0; i<checkboxLabels.length; i++){
PdfPCell cell = new PdfPCell();
cell.setFixedHeight(kid_height);
cell.setCellEvent(new Form2pages(writer, kid, fieldName,
checkboxLabels[i], "check", pageNo) );
subtable.addCell(cell);
cell = new PdfPCell(new Phrase(checkboxLabels[i]));
subtable.addCell(cell);
}
table.addCell(new PdfPCell(subtable));
return table;
}
}
***********************************************************
Sarah
--
View this message in context:
http://www.nabble.com/why-pdf-fields-of-1st-page-move-to-2nd-page-tp15299931p15508686.html
Sent from the iText - General mailing list archive at Nabble.com.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/