package tutorial.chapter05; import com.itextpdf.io.font.constants.StandardFonts; import com.itextpdf.kernel.colors.ColorConstants; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.extgstate.PdfExtGState; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.properties.TextAlignment; import com.itextpdf.layout.properties.VerticalAlignment; import java.io.File; import java.io.IOException; /** * Simple adding content example. */ public class C05E03_AddContent { public static final String SRC = "src/main/resources/pdf/ufo.pdf"; public static final String DEST = "results/chapter05/add_content.pdf"; public static void main(String args[]) throws IOException { File file = new File(DEST); file.getParentFile().mkdirs(); new C05E03_AddContent().manipulatePdf(SRC, DEST); } public void manipulatePdf(String src, String dest) throws IOException { //Initialize PDF document PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); Document document = new Document(pdfDoc); Rectangle pageSize; PdfCanvas canvas; int n = pdfDoc.getNumberOfPages(); for (int i = 1; i <= n; i++) { PdfPage page = pdfDoc.getPage(i); pageSize = page.getPageSize(); canvas = new PdfCanvas(page); //Draw header text canvas.beginText().setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 7) .moveText(pageSize.getWidth() / 2 - 24, pageSize.getHeight() - 10) .showText("I want to believe") .endText(); //Draw footer line canvas.setStrokeColor(ColorConstants.BLACK) .setLineWidth(.2f) .moveTo(pageSize.getWidth() / 2 - 30, 20) .lineTo(pageSize.getWidth() / 2 + 30, 20).stroke(); //Draw page number canvas.beginText().setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 7) .moveText(pageSize.getWidth() / 2 - 7, 10) .showText(String.valueOf(i)) .showText(" of ") .showText(String.valueOf(n)) .endText(); //Draw watermark Paragraph p = new Paragraph("CONFIDENTIAL").setFontSize(60); canvas.saveState(); PdfExtGState gs1 = new PdfExtGState().setFillOpacity(0.2f); canvas.setExtGState(gs1); document.showTextAligned(p, pageSize.getWidth() / 2, pageSize.getHeight() / 2, pdfDoc.getPageNumber(page), TextAlignment.CENTER, VerticalAlignment.MIDDLE, 45); canvas.restoreState(); } pdfDoc.close(); } }