您的位置:首页 > 编程语言 > Java开发

利用itext创建pdf表格文件(java)

2009-07-24 15:44 495 查看
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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: