1. 生成PDF
载入字体
static { FontFactory.register("/fonts/msyh.ttf"); FontFactory.register("/fonts/msyhbd.ttf"); FontFactory.register("/fonts/simsun.ttc"); FontFactory.register("/fonts/simhei.ttf"); }
生成PDF
Rectangle rectPageSize = new Rectangle(PageSize.A4);// A4纸张 Document document = new Document(rectPageSize, 40, 40, 40, 40);// 上、下、左、右间距 try { String filePath = StaticConfig.getConfig("file_path") + invest.getContractPath(); String folderPath = filePath.substring(0, filePath.lastIndexOf("/") + 1); File folder = new File(folderPath); if (!folder.exists()) { folder.mkdirs(); } PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filePath)); writer.setPdfVersion(PdfWriter.PDF_VERSION_1_7); document.addCreationDate(); document.addCreator("rockbb"); document.addTitle("rockbbPDF"); document.addKeywords("export"); document.addSubject("rockbb业务文件"); document.open(); Font yahei9px = FontFactory.getFont("微软雅黑", BaseFont.IDENTITY_H, 9); Font yahei10px = FontFactory.getFont("微软雅黑", BaseFont.IDENTITY_H, 10); Font yahei11px = FontFactory.getFont("微软雅黑", BaseFont.IDENTITY_H, 11); Font yahei12px = FontFactory.getFont("微软雅黑", BaseFont.IDENTITY_H, 12); document.add(paragraph("编号:[" + invest.getContractSn() + "]", yahei9px, Paragraph.ALIGN_RIGHT)); //表格 PdfPTable table = new PdfPTable(3); table.setSpacingBefore(10.0f); table.setWidthPercentage(100); table.setWidths(new float[]{0.25f, 0.25f, 0.5f}); PdfPCell cell = cell("当事方", yahei11px, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE); cell.setColspan(3); table.addCell(cell); cell = cell("甲方(投资者)", yahei10px); cell.setRowspan(3); table.addCell(cell); table.addCell(cell("姓名", yahei10px)); table.addCell(cell(user.getRealName(), yahei10px)); table.addCell(cell("用户ID", yahei10px)); table.addCell(cell(user.getTel(), yahei10px)); table.addCell(cell("身份证", yahei10px)); table.addCell(cell(user.getIdNumber(), yahei10px)); cell = cell("乙方", yahei10px); cell.setRowspan(3); table.addCell(cell); table.addCell(cell("名称", yahei10px)); table.addCell(cell("公司", yahei10px)); table.addCell(cell("住所", yahei10px)); table.addCell(cell("北京市朝阳区", yahei10px)); table.addCell(cell("注册证", yahei10px)); table.addCell(cell("", yahei10px)); document.add(table); document.add(paragraph("* 凡本协议未列示的产品信息以平台产品说明书页面显示的产品具体信息为准。", yahei9px)); document.add(paragraph("第二部分 协议条款", yahei12px, Paragraph.ALIGN_LEFT, 10.0f)); document.add(paragraph(agreement, yahei10px, Paragraph.ALIGN_LEFT, 5.0f)); document.close(); writer.close(); } catch (FileNotFoundException e) { logger.error("FileNotFoundException"); logger.debug(e.getMessage(), e); } catch (IOException e) { logger.error("IOException"); logger.debug(e.getMessage(), e); } catch (DocumentException e) { logger.error("DocumentException"); logger.debug(e.getMessage(), e); }
工具方法
private static PdfPCell cell(String content, Font font) { PdfPCell cell = new PdfPCell(new Phrase(content, font)); cell.setBorderColor(new BaseColor(196, 196, 196)); cell.setPadding(5.0f); cell.setPaddingTop(1.0f); return cell; } private static PdfPCell cell(String content, Font font, int hAlign, int vAlign) { PdfPCell cell = new PdfPCell(new Phrase(content, font)); cell.setBorderColor(new BaseColor(196, 196, 196)); cell.setVerticalAlignment(vAlign); cell.setHorizontalAlignment(hAlign); cell.setPadding(5.0f); cell.setPaddingTop(1.0f); return cell; } private static Paragraph paragraph(String content, Font font) { return new Paragraph(content, font); } private static Paragraph paragraph(String content, Font font, int hAlign) { Paragraph paragraph = new Paragraph(content, font); paragraph.setAlignment(hAlign); return paragraph; } private static Paragraph paragraph(String content, Font font, int hAlign, float spacingBefore) { Paragraph paragraph = new Paragraph(content, font); paragraph.setAlignment(hAlign); paragraph.setSpacingBefore(spacingBefore); return paragraph; }
原文:http://www.cnblogs.com/milton/p/5167229.html