import java.awt.Color;
import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.ColumnText;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfTemplate;
import com.lowagie.text.pdf.PdfTransparencyGroup;
import com.lowagie.text.pdf.PdfWriter;

public class Transparency {
    public static void pictureBackdrop(float x, float y, PdfContentByte cb) throws Exception {
        cb.setColorStroke(Color.black);
        cb.setColorFill(Color.gray);
        cb.rectangle(x, y, 100, 200);
        cb.fill();
        cb.setLineWidth(2);
        cb.rectangle(x, y, 200, 200);
        cb.stroke();
    }

    public static void pictureCircles(float x, float y, PdfContentByte cb) throws Exception {
        cb.setColorFill(Color.red);
        cb.circle(x + 70, y + 70, 50);
        cb.fill();
        cb.setColorFill(Color.yellow);
        cb.circle(x + 100, y + 130, 50);
        cb.fill();
        cb.setColorFill(Color.blue);
        cb.circle(x + 130, y + 70, 50);
        cb.fill();
    }

	private static void page(int page, Document document, PdfContentByte cb) throws Exception {
		float gap = (document.getPageSize().width() - 400) / 3;
		float sy = (document.getPageSize().height() - 250);
		
		pictureBackdrop(gap, sy, cb);
		pictureBackdrop(200 + 2 * gap, sy, cb);
		
		pictureCircles(gap, sy, cb);
		
		if (page == 2) {
			cb.saveState();
			PdfGState gs1 = new PdfGState();
			gs1.setFillOpacity(0.2f);
			cb.setGState(gs1);
		}
		
		pictureCircles(200 + 2 * gap, sy, cb);
		
		if (page == 2) {
			cb.restoreState();
		}
	}

    public static void main(String[] args) {
        Document document = new Document(new Rectangle(650, 320), 20, 20, 20, 20);
        try {
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("transparency.pdf"));
            document.open();
			
			PdfContentByte cb = writer.getDirectContent();
			page(1, document, cb);
			document.newPage();
			cb = writer.getDirectContent();
			page(2, document, cb);
        } catch (Exception e) {
            e.printStackTrace();
        }
        document.close();
    }
}
