import java.awt.Color;
import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.pdf.CMYKColor;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfShading;
import com.lowagie.text.pdf.PdfShadingPattern;
import com.lowagie.text.pdf.PdfTemplate;
import com.lowagie.text.pdf.PdfTransparencyGroup;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
public static void main(String[] args) throws Exception {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
document.open();
PdfContentByte cb = writer.getDirectContent();
float gap = (document.getPageSize().width() - 400) / 3;
pictureBackdrop(gap, 500, cb, writer);
PdfTemplate tp;
PdfTransparencyGroup group;
tp = cb.createTemplate(200, 200);
pictureCircles(0, 0, tp);
group = new PdfTransparencyGroup();
group.setIsolated(true);
group.setKnockout(true);
tp.setGroup(group);
cb.addTemplate(tp, gap, 500);
document.close();
}
public static void pictureBackdrop(float x, float y, PdfContentByte cb, PdfWriter writer) {
PdfShading axial = PdfShading.simpleAxial(writer, x, y, x + 200, y, Color.yellow, Color.red);
PdfShadingPattern axialPattern = new PdfShadingPattern(axial);
cb.setShadingFill(axialPattern);
cb.setColorStroke(Color.black);
cb.setLineWidth(2);
cb.rectangle(x, y, 200, 200);
cb.fillStroke();
}
public static void pictureCircles(float x, float y, PdfContentByte cb) {
PdfGState gs = new PdfGState();
gs.setBlendMode(PdfGState.BM_MULTIPLY);
gs.setFillOpacity(1f);
cb.setGState(gs);
cb.setColorFill(new CMYKColor(0f, 0f, 0f, 0.15f));
cb.circle(x + 125, y + 75, 70);
cb.fill();
cb.circle(x + 125, y + 125, 70);
cb.fill();
}
}