itext2.1.7动态生成PDF实例
itext2.1.7 API 见附件
package com.aegon_cnooc.giss.util; import java.awt.Color; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import com.aegon_cnooc.giss.vo.Preservation; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.HeaderFooter; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.Phrase; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.AcroFields; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfPCell; import com.lowagie.text.pdf.PdfPTable; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; import com.lowagie.text.pdf.PdfWriter; public class PDFGeneratorUtil { // 模板存放的目录 public static final String TEMPLATE_PDF_PATH = Constants.TEMPLATE_PDF_PATH; // 生成PDF存放路径 public static final String PDF_PATH = Constants.PDF_PATH; public static String createPreservationListPDF(String fileName, Map<String, String> baseInfo, String[] tableHeads, List<Preservation> tableDataList) throws Exception{ //Document doc = new Document(PageSize.B5); String sysdate = GetSysdate();//获取系统当前时间 String fullFileName = PDF_PATH + "\\" + sysdate + "_" +fileName+ ".pdf";//文件全路径 Rectangle rect = new Rectangle(842.0F, 595.0F);//设置页面大小,在源码中有PageSize.A4 = new Rectangle(595.0F, 842.0F) Document document = new Document(rect, 80, 80, 90, 25); //设置成A4纸大小,内容距左右上下的距离 //String fullFileName = PDF_PATH + fileName+".pdf"; //文件全路径 try { PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(fullFileName)); // 插入一个段落 //设置中文字体 BaseFont baseFontChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); //1.标题字体 Font headFont = new Font(baseFontChinese , 16 , Font.BOLD);; //2.正文字体 Font contentFontSecond = new Font(baseFontChinese , 10 , Font.NORMAL); //设置页脚 HeaderFooter footer=new HeaderFooter(new Phrase("保险公司盖章: \n\n ",contentFontSecond),false); /** * 0是靠左 * 1是居中 * 2是居右 */ footer.setBorderColor(Color.black); footer.setBorder(Rectangle.TOP); footer.setAlignment(2);//设置右对齐 document.setFooter(footer); document.open();//打开PDF文件进行编辑 //设置标题 Paragraph head1 = new Paragraph("团险保全明细", headFont); head1.setAlignment(1);//设置段落居中 head1.setSpacingAfter(30); document.add(head1); //使用表格布局 PdfPTable baseInfoTable = new PdfPTable(6); //设置表格有多少列 int width[] = {6,14,8,50,8,14};//设置每列宽度比例 baseInfoTable.setWidths(width); baseInfoTable.setWidthPercentage(100);//占页面宽度比例 //设置表格中单元格的属性,所有单元格都可以使用 PdfPCell pdfPCell = new PdfPCell();//创建一个单元格 //设置字体水平居中 pdfPCell.setHorizontalAlignment(PdfPCell.LEFT);//设置水平对齐 //设置字体垂直对齐居中 pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); pdfPCell.setBorder(0); pdfPCell.setPhrase(new Phrase("保单号:" , contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(baseInfo.get("policyCode"), contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase("投保单位:" , contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(baseInfo.get("companyName"), contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(""));//设置空白列 baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(""));//设置空白列 baseInfoTable.addCell(pdfPCell); //第二行 pdfPCell.setBorder(Rectangle.BOTTOM);//设置底部颜色,实现一条横线的效果 pdfPCell.setBorderColor(Color.BLACK); pdfPCell.setPhrase(new Phrase("批单号:" , contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(baseInfo.get("policyChangeId"), contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase("保全单位:" , contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase("团单短险批次增加被保人", contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase("生效日期:",contentFontSecond)); baseInfoTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(baseInfo.get("effectiveDate"), contentFontSecond)); baseInfoTable.addCell(pdfPCell); baseInfoTable.setSpacingAfter(30);//设置间距 document.add(baseInfoTable); //清单 PdfPTable presListTable = new PdfPTable(tableHeads.length); //设置表格有多少列 int presWidth[] = {16,16,17,17,17,17};//设置每列宽度比例 presListTable.setWidths(presWidth); presListTable.setWidthPercentage(100);//占页面宽度比例 //设置表格中单元格的属性,所有单元格都可以使用 //PdfPCell pdfPCell = new PdfPCell();//创建一个单元格 //设置字体水平居中 pdfPCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);//设置水平对齐 //设置字体垂直对齐居中 pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); pdfPCell.setBorder(0); //保险方案内容: for(String head : tableHeads){ pdfPCell.setPhrase(new Phrase(head , contentFontSecond)); presListTable.addCell(pdfPCell); } presListTable.completeRow(); for(Preservation preservation : tableDataList){ pdfPCell.setPhrase(new Phrase(preservation.getInsuredName(), contentFontSecond)); presListTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(preservation.getInsuredIdcard(), contentFontSecond)); presListTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(preservation.getJobLevel(), contentFontSecond)); presListTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(preservation.getPackageName(), contentFontSecond)); presListTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(preservation.getPolicyFee(), contentFontSecond)); presListTable.addCell(pdfPCell); pdfPCell.setPhrase(new Phrase(preservation.getEffectiveDate(), contentFontSecond)); presListTable.addCell(pdfPCell); presListTable.completeRow();//完成行 } document.add(presListTable); } catch (Exception e) { e.printStackTrace(); } finally { document.close(); } return fullFileName; } public static String GetSysdate() { java.text.DateFormat df = new java.text.SimpleDateFormat("yyyyMMddhhmmssSSS"); java.util.Date date = new java.util.Date(); String sysdate = df.format(date); return sysdate; } // 获取pdf模板的全路径 public static String GetPdfPath(String fileName) { String pdfpath = TEMPLATE_PDF_PATH + "\\"+ fileName + ".pdf"; return pdfpath; } }
生成的PDF效果图如附件demo。。。。
相关推荐
### 使用IText 2.1.7生成PDF 生成PDF的基本步骤通常包括以下几个部分: 1. **初始化Document对象**:`Document document = new Document();` 这是PDF文档的基础容器。 2. **创建PdfWriter实例**:`PdfWriter....
总结,iText 2.1.7是Java生成PDF文档的重要工具,配合iTextAsian.jar和iReport.jar,可以满足复杂需求,包括支持亚洲语言和可视化报告设计。虽然这个版本相对较老,但其基本功能依然强大,对于许多项目来说仍然是一...
2.1.7版本是这个库的一个历史版本,提供了丰富的功能来满足开发者在生成PDF时的需求。在这个版本中,IText 提供了对PDF标准的全面支持,允许程序员以编程方式创建高质量、可打印的PDF文档。 首先,我们要理解PDF...
1. `itext-2.1.7.jar`:这是Itext库的核心组件,提供了生成PDF和Word文档的基本功能。 2. `itext-rtf-2.1.7.jar`:这个扩展库专门用于处理RTF(Rich Text Format),它是Word文档的一种格式。 在Java项目中,你需要...
总的来说,iText 2.1.7是Java开发中生成PDF文档的强大工具,尤其配合`itextasian-2.1.7.jar`,能够很好地解决中文显示问题,使得Java应用程序在生成报表、合同等含有中文内容的PDF文档时,表现出优秀的性能和灵活性...
首先,我们来看看iText如何帮助Java开发者生成PDF。iText的核心概念是PdfDocument对象,它是所有PDF文档的基础。通过创建PdfDocument实例,你可以添加页面、设置字体、插入文本、绘制图形,甚至嵌入图像。例如,要...
要使用iText生成PDF文件,首先需要创建一个Document对象。Document对象是iText的核心对象,用于表示PDF文件的结构。创建Document对象可以使用以下三种方式: 1. `Document document = new Document();` 2. `...
《深入解析iText-2.1.7.js6.jar:PDF处理的核心技术》 在IT领域,PDF(Portable Document Format)格式广泛应用于文档共享和打印,而iText库则是处理PDF文档的重要工具之一。本篇文章将围绕“iText-2.1.7.js6.jar”...
iText支持多种Writer类型,如`PdfWriter`用于生成PDF文件,`TeXWriter`则用于生成TeX文档。 #### 六、字体与中文显示 直接在PDF中插入中文字符时,由于默认字体不包含中文字符集,可能会出现乱码。解决方法是在第9...
在IT行业中,生成PDF文档是一项常见的任务,特别是在报告、合同或者技术文档的制作上。iText是一个强大的Java库,专门用于创建和修改PDF文档。在这个“itext设置段落行间距.zip”压缩包中,包含了解决PDF生成过程中...
2. **报告生成**:开发者可以利用iText动态生成包含复杂布局和数据的PDF报告,而iText-RTF则可以确保这些报告在不支持PDF的环境中仍能以RTF格式查看。 3. **文档迁移**:在需要将大量PDF文档迁移到其他文档管理系统...
《Java使用iTextPDF库创建和操作PDF文档详解》 在Java开发中,有时我们需要将数据转换为PDF...通过学习和实践,你可以掌握更多的高级功能,比如动态生成PDF、添加水印、数字签名等,进一步提升你的Java PDF开发能力。
虽然iText主要针对PDF,但通过一些扩展,它也能支持生成Word文档,这通常涉及到将PDF转换为DOC或DOCX格式。 要使用iText 2.1.7导出Word表格,你需要以下关键步骤: 1. **引入依赖**:在Java项目中,确保已经正确地...
在Java开发中,使用iText库可以方便地实现PDF的生成、修改和格式化。本示例将深入讲解如何利用iText库来导出PDF文件,以满足特定的需求。 首先,确保已将iText库添加到项目依赖中。通常,可以通过Maven或Gradle来...
3. `itext-2.1.7.jar`:这是iText库的基础版本,包含了生成PDF和其他文档格式的主要功能。在这个案例中,它是用来创建PDF文档,然后可能通过`itext-rtf-2.1.7.jar`转换成Word文档。 要使用iText生成Word文档,你...
3. itext-rtf-2.1.7.jar - 这个库用于处理RTF(Rich Text Format),RTF是一种与平台无关的格式,可以被多种文字处理软件打开,包括Microsoft Word。 接下来,我们需要了解如何在Java代码中使用iText来生成Word文件...
Lowagie.text是一个强大的Java库,专门用于处理文本和生成PDF文件,它在Java开发领域中扮演着重要的角色。本文将深入探讨Lowagie.text-2.1.7版本,解析其核心功能,以及如何在实际项目中应用。 首先,让我们了解...
这两个文件是iText 2.1.7版本的组成部分,其中`itext-2.1.7.jar`是核心库,提供了创建、读取、修改PDF文档的基本功能,而`itext-rtf-2.1.7.jar`则是一个扩展库,支持将RTF(Rich Text Format)转换为PDF。...
在这个场景中,我们使用iText来生成PDF文件。iText 2.1.7是较旧的版本,但依然功能强大,足以满足我们的需求。新版本的iText可能有更多优化和特性,但如果你的项目已经依赖于2.1.7,那么可以继续使用。 要将多页TIF...