public class GeneralPdf extends PdfPageEventHelper {
public final boolean printPdf() {
Document doc = null;
try {
Rectangle rectPageSize = new Rectangle(PageSize.A4);
rectPageSize = rectPageSize.rotate();
doc = new Document(rectPageSize, 25, 25, 25, 25);
PdfWriter writer = PdfWriter.getInstance(doc, "c://pdffile.pdf");
writer.setPageEvent(new generalContent());
doc.open();
generalContent();
doc.add(table);
doc.close();
writer.close();
} catch (Exception e) {
e.getMessage());
}
}
public final void onCloseDocument(final PdfWriter writer, final Document arg1) {
tpl.beginText();
tpl.setFontAndSize(helv, 12);
tpl.setTextMatrix(0, 0);
tpl.showText("" + (writer.getPageNumber() - 1));
tpl.endText();
}
public final void onEndPage(final PdfWriter writer, final Document document) {
PdfContentByte cb = writer.getDirectContent();
cb.saveState();
String text = writer.getPageNumber() + "/";
float textSize = helv.getWidthPoint(text, 12);
float textBase = document.bottom();
cb.beginText();
cb.setFontAndSize(helv, 12);
cb.setTextMatrix(document.getPageSize().getWidth() / 2, textBase);
cb.showText(text);
cb.endText();
cb.addTemplate(tpl, document.getPageSize().getWidth() / 2 + textSize, textBase);
cb.saveState();
}
public final void onOpenDocument(final PdfWriter writer, final Document arg1) {
try {
// 初期化template
tpl = writer.getDirectContent().createTemplate(100, 100);
// 创建日文字体
helv = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-HW-H", false);
} catch (Exception e) {
e.getMessage();
}
}
// PDF文件内容
protected static void generalContent() {
PdfPCell cell = null; PdfPTable bodyTable = null; PdfPCell bodyCell = null; PdfPCellEventExtBottomDash cellBottomDash = new PdfPCellEventExtBottomDash(); PdfPCellEventExtRightDash cellRightDash = new PdfPCellEventExtRightDash();
...
bodyTable = new PdfPTable(IWIDTHS);
bodyCell = new PdfPCell(new Paragraph("text", fontContent));
bodyCell.setHorizontalAlignment(Element.ALIGN_CENTER);
bodyCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
bodyCell.setBorder(PdfPCell.NO_BORDER);
bodyCell.setCellEvent(cellBottomDash);
bodyCell.setBorder(PdfPCell.RIGHT);
bodyCell.setFixedHeight(CELLHEIGHT);
bodyTable.addCell(bodyCell);
...
}
}
// 画表格虚线1
public class PdfPCellEventExtBottomDash implements PdfPCellEvent {
public final void cellLayout(final PdfPCell cell, final Rectangle position,
final PdfContentByte[] canvases) {
PdfContentByte cb = canvases[PdfPTable.TEXTCANVAS];
cb.setLineCap(PdfContentByte.LINE_CAP_PROJECTING_SQUARE);
cb.setLineDash(2, 0);
cb.setLineWidth(0.5f);
cb.moveTo(position.getLeft(), position.getBottom());
cb.lineTo(position.getRight(), position.getBottom());
cb.stroke();
}
}
// 画表格虚线2
public class PdfPCellEventExtRightDash implements PdfPCellEvent {
public final void cellLayout(final PdfPCell cell, final Rectangle position,
final PdfContentByte[] canvases) {
PdfContentByte cb = canvases[PdfPTable.TEXTCANVAS];
cb.setLineCap(PdfContentByte.LINE_CAP_PROJECTING_SQUARE);
cb.setLineDash(2, 0);
cb.setLineWidth(0.5f);
cb.moveTo(position.getRight(), position.getTop());
cb.lineTo(position.getRight(), position.getBottom());
cb.stroke();
}
}