/** * Creates a PDF document. * * @param filename the path to the new PDF document * @throws DocumentException * @throws IOException * @throws DocumentException * @throws IOException */ public void createPdf(String filename) throws IOException, DocumentException { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); document.open(); PdfContentByte canvas = writer.getDirectContent(); canvas.saveState(); for (int i = 25; i > 0; i--) { canvas.setLineWidth((float) i / 10); canvas.moveTo(50, 806 - (5 * i)); canvas.lineTo(320, 806 - (5 * i)); canvas.stroke(); } canvas.restoreState(); canvas.moveTo(350, 800); canvas.lineTo(350, 750); canvas.moveTo(540, 800); canvas.lineTo(540, 750); canvas.stroke(); canvas.saveState(); canvas.setLineWidth(8); canvas.setLineCap(PdfContentByte.LINE_CAP_BUTT); canvas.moveTo(350, 790); canvas.lineTo(540, 790); canvas.stroke(); canvas.setLineCap(PdfContentByte.LINE_CAP_ROUND); canvas.moveTo(350, 775); canvas.lineTo(540, 775); canvas.stroke(); canvas.setLineCap(PdfContentByte.LINE_CAP_PROJECTING_SQUARE); canvas.moveTo(350, 760); canvas.lineTo(540, 760); canvas.stroke(); canvas.restoreState(); canvas.saveState(); canvas.setLineWidth(8); canvas.setLineJoin(PdfContentByte.LINE_JOIN_MITER); canvas.moveTo(387, 700); canvas.lineTo(402, 730); canvas.lineTo(417, 700); canvas.stroke(); canvas.setLineJoin(PdfContentByte.LINE_JOIN_ROUND); canvas.moveTo(427, 700); canvas.lineTo(442, 730); canvas.lineTo(457, 700); canvas.stroke(); canvas.setLineJoin(PdfContentByte.LINE_JOIN_BEVEL); canvas.moveTo(467, 700); canvas.lineTo(482, 730); canvas.lineTo(497, 700); canvas.stroke(); canvas.restoreState(); canvas.saveState(); canvas.setLineWidth(3); canvas.moveTo(50, 660); canvas.lineTo(320, 660); canvas.stroke(); canvas.setLineDash(6, 0); canvas.moveTo(50, 650); canvas.lineTo(320, 650); canvas.stroke(); canvas.setLineDash(6, 3); canvas.moveTo(50, 640); canvas.lineTo(320, 640); canvas.stroke(); canvas.setLineDash(15, 10, 5); canvas.moveTo(50, 630); canvas.lineTo(320, 630); canvas.stroke(); float[] dash1 = {10, 5, 5, 5, 20}; canvas.setLineDash(dash1, 5); canvas.moveTo(50, 620); canvas.lineTo(320, 620); canvas.stroke(); float[] dash2 = {9, 6, 0, 6}; canvas.setLineCap(PdfContentByte.LINE_CAP_ROUND); canvas.setLineDash(dash2, 0); canvas.moveTo(50, 610); canvas.lineTo(320, 610); canvas.stroke(); canvas.restoreState(); PdfTemplate hooks = canvas.createTemplate(300, 120); hooks.setLineWidth(8); hooks.moveTo(46, 50); hooks.lineTo(65, 80); hooks.lineTo(84, 50); hooks.stroke(); hooks.moveTo(87, 50); hooks.lineTo(105, 80); hooks.lineTo(123, 50); hooks.stroke(); hooks.moveTo(128, 50); hooks.lineTo(145, 80); hooks.lineTo(162, 50); hooks.stroke(); hooks.moveTo(169, 50); hooks.lineTo(185, 80); hooks.lineTo(201, 50); hooks.stroke(); hooks.moveTo(210, 50); hooks.lineTo(225, 80); hooks.lineTo(240, 50); hooks.stroke(); canvas.saveState(); canvas.setMiterLimit(2); canvas.addTemplate(hooks, 300, 600); canvas.restoreState(); canvas.saveState(); canvas.setMiterLimit(2.1f); canvas.addTemplate(hooks, 300, 550); canvas.restoreState(); document.close(); }