package de.bauerkirch.formgenerator;

import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.DocumentException;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.PdfAnnotation;
import com.lowagie.text.pdf.PdfAppearance;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfFormField;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Test();
	}

	public static void Test() {
		System.out.println("Textfields");

		// step 1: creation of a document-object
		try {
			PdfReader reader = new PdfReader("test.pdf");
			PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(
					"testRadio.pdf"));

			PdfContentByte cb = stamp.getOverContent(1);
			cb.moveTo(0, 0);
			PdfFormField radio = PdfFormField.createRadioButton(stamp
					.getWriter(), true);
			// The Appearance is greater than the Widget-Rect
			PdfAppearance tpOff = cb.createAppearance(30, 30);
			PdfAppearance tpOn = cb.createAppearance(30, 30);

			tpOff.circle(10, 10, 9);
			tpOff.stroke();

			tpOn.circle(10, 10, 9);
			tpOn.stroke();
			tpOn.circle(10, 10, 3);
			tpOn.fillStroke();

			radio.setFieldName("CreditCard");
			radio.setValueAsName("MasterCard");

			PdfFormField radio1 = PdfFormField.createEmpty(stamp.getWriter());
			radio1.setWidget(new Rectangle(100, 700, 120, 720),
					PdfAnnotation.HIGHLIGHT_INVERT);
			radio1.setAppearanceState("MasterCard");
			radio1.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", tpOff);
			radio1.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "MasterCard",
					tpOn);
			radio.addKid(radio1);

			PdfFormField radio2 = PdfFormField.createEmpty(stamp.getWriter());
			radio2.setWidget(new Rectangle(100, 660, 120, 680),
					PdfAnnotation.HIGHLIGHT_INVERT);
			radio2.setAppearanceState("Off");
			radio2.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", tpOff);
			radio2.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Visa", tpOn);
			radio.addKid(radio2);

			PdfFormField radio3 = PdfFormField.createEmpty(stamp.getWriter());
			radio3.setWidget(new Rectangle(100, 620, 120, 640),
					PdfAnnotation.HIGHLIGHT_INVERT);
			radio3.setAppearanceState("Off");
			radio3.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", tpOff);
			radio3.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, "American",
					tpOn);
			radio.addKid(radio3);

			// Whithout this flags no flattened Radiobutton appears
			radio.setFlags(PdfFormField.FLAGS_PRINT); 

			stamp.addAnnotation(radio, 1);

		
			reader.close();
			stamp.close();

			reader = new PdfReader("testRadio.pdf");
			stamp = new PdfStamper(reader, new FileOutputStream(
					"testRadioflat.pdf"));			
			stamp.setFormFlattening(true);
			reader.close();
			stamp.close();
			
		} catch (DocumentException de) {
			System.err.println(de.getMessage());
		} catch (IOException ioe) {
			System.err.println(ioe.getMessage());
		}

	}
}
