- 浏览: 80229 次
- 性别:
- 来自: 北京
最新评论
-
贝塔ZQ:
实现导出word模板文件,可以用插件试试么,那么多插件的,Pa ...
利用Itext画模板导出word,纯java实现 -
tangqingzhu:
请问Lz能定点插入图片或者表格、文字么??能不能给个QQ 。
利用Itext画模板导出word,纯java实现 -
allmajor:
学习一下
利用Itext画模板导出word,纯java实现 -
zl-2577:
痛苦不忧伤 写道if(document.form1){docu ...
10秒后自动跳转网页 -
痛苦不忧伤:
if(document.form1){document.for ...
10秒后自动跳转网页
最近项目中要用到导出word这个功能,大概研究了一些实现方式。jacob,poi,jodconvert,jspperreport,itext等等,jacob是连接java和com的桥,因为用的IBM的小型机,所以用的是AIX操作系统,不支持,故砍掉;poi调整word格式太麻烦了,而且会有问题,砍掉;jodconvert基于openoffice,砍掉;jspperreport,利用ireport画模板太累,砍掉;最终确定下来用itext,itext提供的java类库还是比较全面的。
一下是代码和所需jar包(需要引入iText-2.1.7.jar;iTextAsian.jar;iText-rtf-2.1.7.jar)
一下是代码和所需jar包(需要引入iText-2.1.7.jar;iTextAsian.jar;iText-rtf-2.1.7.jar)
import java.awt.Color; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import com.lowagie.text.Cell; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.Image; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.Phrase; import com.lowagie.text.Table; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.rtf.RtfWriter2; /** * 根据itext提供的java类库,构建word模板,并添加相应的内容,从而导出word报告;平台不相关 * 需要引入iText-2.1.7.jar;iTextAsian.jar;iText-rtf-2.1.7.jar * * @author ryan */ public class WordTemplete { private Document document; private BaseFont bfChinese; public BaseFont getBfChinese() { return bfChinese; } public void setBfChinese(BaseFont bfChinese) { this.bfChinese = bfChinese; } public Document getDocument() { return document; } public void setDocument(Document document) { this.document = document; } public WordTemplete(){ this.document = new Document(PageSize.A4); } /** * @param filePath 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中 * @throws DocumentException * @throws IOException */ public void openDocument(String filePath) throws DocumentException, IOException { // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中 RtfWriter2.getInstance(this.document, new FileOutputStream(filePath)); this.document.open(); // 设置中文字体 this.bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); } /** * @param titleStr 标题 * @param fontsize 字体大小 * @param fontStyle 字体样式 * @param elementAlign 对齐方式 * @throws DocumentException */ public void insertTitle(String titleStr,int fontsize,int fontStyle,int elementAlign) throws DocumentException{ Font titleFont = new Font(this.bfChinese, fontsize, fontStyle); Paragraph title = new Paragraph(titleStr); // 设置标题格式对齐方式 title.setAlignment(elementAlign); title.setFont(titleFont); this.document.add(title); } /** * @param contextStr 内容 * @param fontsize 字体大小 * @param fontStyle 字体样式 * @param elementAlign 对齐方式 * @throws DocumentException */ public void insertContext(String contextStr,int fontsize,int fontStyle,int elementAlign) throws DocumentException{ // 正文字体风格 Font contextFont = new Font(bfChinese, fontsize, fontStyle); Paragraph context = new Paragraph(contextStr); //设置行距 context.setLeading(30f); // 正文格式左对齐 context.setAlignment(elementAlign); context.setFont(contextFont); // 离上一段落(标题)空的行数 context.setSpacingBefore(5); // 设置第一行空的列数 context.setFirstLineIndent(20); document.add(context); } /* * 测试清单 * */ public void insertRiskTable() throws DocumentException{ Table aTable = new Table(6,3); int width[] = { 10, 40, 17, 13, 10, 10 }; aTable.setWidths(width);// 设置每列所占比例 aTable.setWidth(100); // 占页面宽度 90% aTable.setAlignment(Element.ALIGN_CENTER);// 居中显示 aTable.setAlignment(Element.ALIGN_MIDDLE);// 纵向居中显示 aTable.setAutoFillEmptyCells(true); // 自动填满 aTable.setBorderWidth(0); // 边框宽度 aTable.setBorderColor(new Color(0, 125, 255)); // 边框颜色 aTable.setPadding(2);// 衬距,看效果就知道什么意思了 aTable.setSpacing(3);// 即单元格之间的间距 aTable.setBorder(2);// 边框 Font fontChinese = new Font(bfChinese, 10, Font.BOLD); Cell cell = new Cell(new Phrase("\n测试代码\n", fontChinese)); cell.setVerticalAlignment(Element.ALIGN_CENTER); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBorderColor(new Color(0, 0, 0)); cell.setBackgroundColor(new Color(153, 204, 255)); aTable.addCell(cell); Cell cell1 = new Cell(new Phrase("测试名称", fontChinese)); cell1.setVerticalAlignment(Element.ALIGN_CENTER); cell1.setHorizontalAlignment(Element.ALIGN_CENTER); cell1.setBorderColor(new Color(0, 0, 0)); cell1.setBackgroundColor(new Color(153, 204, 255)); aTable.addCell(cell1); Cell cell2 = new Cell(new Phrase("测试发生可能性", fontChinese)); cell2.setVerticalAlignment(Element.ALIGN_CENTER); cell2.setHorizontalAlignment(Element.ALIGN_CENTER); cell2.setBorderColor(new Color(0, 0, 0)); cell2.setBackgroundColor(new Color(255, 255, 0)); aTable.addCell(cell2); Cell cell3 = new Cell(new Phrase("测试损失度", fontChinese)); cell3.setVerticalAlignment(Element.ALIGN_CENTER); cell3.setHorizontalAlignment(Element.ALIGN_CENTER); cell3.setBorderColor(new Color(0, 0, 0)); cell3.setBackgroundColor(new Color(255, 255, 0)); aTable.addCell(cell3); Cell cell4 = new Cell(new Phrase("测试水平", fontChinese)); cell4.setVerticalAlignment(Element.ALIGN_CENTER); cell4.setHorizontalAlignment(Element.ALIGN_CENTER); cell4.setBorderColor(new Color(0, 0, 0)); cell4.setBackgroundColor(new Color(255, 255, 0)); aTable.addCell(cell4); Cell cell5 = new Cell(new Phrase("测试等级", fontChinese)); cell5.setVerticalAlignment(Element.ALIGN_CENTER); cell5.setHorizontalAlignment(Element.ALIGN_CENTER); cell5.setBorderColor(new Color(0, 0, 0)); cell5.setBackgroundColor(new Color(255, 255, 0)); aTable.addCell(cell5); for(int i=0;i<12;i++){ aTable.addCell(new Cell(i+"")); } document.add(aTable); document.add(new Paragraph("\n")); } /* * 现状评估 * */ public void insertRiskEvaluationTable() throws DocumentException{ Table aTable = new Table(12,4); int width1[] = { 5, 20, 5, 20, 5, 5, 5, 5, 5, 5, 5, 5}; aTable.setWidths(width1);// 设置每列所占比例 aTable.setWidth(100); // 占页面宽度 90% aTable.setAlignment(Element.ALIGN_CENTER);// 居中显示 aTable.setAlignment(Element.ALIGN_MIDDLE);// 纵向居中显示 aTable.setAutoFillEmptyCells(true); // 自动填满 aTable.setBorderWidth(0); // 边框宽度 aTable.setBorderColor(new Color(0, 125, 255)); // 边框颜色 Font fontChinese = new Font(bfChinese, 10, Font.BOLD); Cell cell = new Cell(new Phrase("\n测试代码\n", fontChinese)); cell.setVerticalAlignment(Element.ALIGN_CENTER); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setRowspan(2); cell.setBorderColor(new Color(0, 0, 0)); cell.setBackgroundColor(new Color(153, 204, 255)); aTable.addCell(cell); Cell cell2 = new Cell(new Phrase("测试名称", fontChinese)); cell2.setVerticalAlignment(Element.ALIGN_CENTER); cell2.setHorizontalAlignment(Element.ALIGN_CENTER); cell2.setRowspan(2); cell2.setBorderColor(new Color(0, 0, 0)); cell2.setBackgroundColor(new Color(153, 204, 255)); aTable.addCell(cell2); Cell cell3 = new Cell(new Phrase("行为代码", fontChinese)); cell3.setVerticalAlignment(Element.ALIGN_CENTER); cell3.setHorizontalAlignment(Element.ALIGN_CENTER); cell3.setRowspan(2); cell3.setBorderColor(new Color(0, 0, 0)); cell3.setBackgroundColor(new Color(153, 204, 255)); aTable.addCell(cell3); Cell cell4 = new Cell(new Phrase("引发测试的行为", fontChinese)); cell4.setVerticalAlignment(Element.ALIGN_CENTER); cell4.setHorizontalAlignment(Element.ALIGN_CENTER); cell4.setRowspan(2); cell4.setBorderColor(new Color(0, 0, 0)); cell4.setBackgroundColor(new Color(153, 204, 255)); aTable.addCell(cell4); Cell cell5 = new Cell(new Phrase("控制现状", fontChinese)); cell5.setVerticalAlignment(Element.ALIGN_CENTER); cell5.setHorizontalAlignment(Element.ALIGN_CENTER); cell5.setColspan(8); cell5.setBorderColor(new Color(0, 0, 0)); cell5.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell5); Cell cell6 = new Cell(new Phrase("部门内审查", fontChinese)); cell6.setVerticalAlignment(Element.ALIGN_CENTER); cell6.setHorizontalAlignment(Element.ALIGN_CENTER); cell6.setBorderColor(new Color(0, 0, 0)); cell6.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell6); Cell cell7 = new Cell(new Phrase("测试意识", fontChinese)); cell7.setVerticalAlignment(Element.ALIGN_CENTER); cell7.setHorizontalAlignment(Element.ALIGN_CENTER); cell7.setBorderColor(new Color(0, 0, 0)); cell7.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell7); Cell cell8 = new Cell(new Phrase("过程监控", fontChinese)); cell8.setVerticalAlignment(Element.ALIGN_CENTER); cell8.setHorizontalAlignment(Element.ALIGN_CENTER); cell8.setBorderColor(new Color(0, 0, 0)); cell8.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell8); Cell cell9 = new Cell(new Phrase("奖惩机制", fontChinese)); cell9.setVerticalAlignment(Element.ALIGN_CENTER); cell9.setHorizontalAlignment(Element.ALIGN_CENTER); cell9.setBorderColor(new Color(0, 0, 0)); cell9.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell9); Cell cell10 = new Cell(new Phrase("明确责权", fontChinese)); cell10.setVerticalAlignment(Element.ALIGN_CENTER); cell10.setHorizontalAlignment(Element.ALIGN_CENTER); cell10.setBorderColor(new Color(0, 0, 0)); cell10.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell10); Cell cell11 = new Cell(new Phrase("执行者能力要求", fontChinese)); cell11.setVerticalAlignment(Element.ALIGN_CENTER); cell11.setHorizontalAlignment(Element.ALIGN_CENTER); cell11.setBorderColor(new Color(0, 0, 0)); cell11.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell11); Cell cell12 = new Cell(new Phrase("专业审查", fontChinese)); cell12.setVerticalAlignment(Element.ALIGN_CENTER); cell12.setHorizontalAlignment(Element.ALIGN_CENTER); cell12.setBorderColor(new Color(0, 0, 0)); cell12.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell12); Cell cell13 = new Cell(new Phrase("资源配置", fontChinese)); cell13.setVerticalAlignment(Element.ALIGN_CENTER); cell13.setHorizontalAlignment(Element.ALIGN_CENTER); cell13.setBorderColor(new Color(0, 0, 0)); cell13.setBackgroundColor(new Color(204, 255, 255)); aTable.addCell(cell13); for(int i=0;i<24;i++){ aTable.addCell(new Cell(i+"")); } document.add(aTable); document.add(new Paragraph("\n")); } /* * 测试控制清单 * */ public void insertRiskControlTable() throws DocumentException{ Table aTable = new Table(11,3); int width[] = { 5, 13, 5, 9, 9, 13, 9, 9, 9, 9, 9 }; aTable.setWidths(width);// 设置每列所占比例 aTable.setWidth(100); // 占页面宽度 90% aTable.setAlignment(Element.ALIGN_CENTER);// 居中显示 aTable.setAlignment(Element.ALIGN_MIDDLE);// 纵向居中显示 aTable.setAutoFillEmptyCells(true); // 自动填满 aTable.setBorderWidth(0); // 边框宽度 aTable.setBorderColor(new Color(0, 125, 255)); // 边框颜色 Font fontChinese = new Font(bfChinese, 10, Font.BOLD); Cell cell = new Cell(new Phrase("\n测试代码\n", fontChinese)); cell.setVerticalAlignment(Element.ALIGN_CENTER); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBorderColor(new Color(0, 0, 0)); cell.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell); Cell cell1 = new Cell(new Phrase("测试名称", fontChinese)); cell1.setVerticalAlignment(Element.ALIGN_CENTER); cell1.setHorizontalAlignment(Element.ALIGN_CENTER); cell1.setBorderColor(new Color(0, 0, 0)); cell1.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell1); Cell cell2 = new Cell(new Phrase("行为代码", fontChinese)); cell2.setVerticalAlignment(Element.ALIGN_CENTER); cell2.setHorizontalAlignment(Element.ALIGN_CENTER); cell2.setBorderColor(new Color(0, 0, 0)); cell2.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell2); Cell cell3 = new Cell(new Phrase("引发测试的行为", fontChinese)); cell3.setVerticalAlignment(Element.ALIGN_CENTER); cell3.setBorderColor(new Color(0, 0, 0)); cell3.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell3); Cell cell4 = new Cell(new Phrase("测试控制态度", fontChinese)); cell4.setVerticalAlignment(Element.ALIGN_CENTER); cell4.setHorizontalAlignment(Element.ALIGN_CENTER); cell4.setBorderColor(new Color(0, 0, 0)); cell4.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell4); Cell cell5 = new Cell(new Phrase("控制措施", fontChinese)); cell5.setVerticalAlignment(Element.ALIGN_CENTER); cell5.setHorizontalAlignment(Element.ALIGN_CENTER); cell5.setBorderColor(new Color(0, 0, 0)); cell5.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell5); Cell cell6 = new Cell(new Phrase("措施类型", fontChinese)); cell6.setVerticalAlignment(Element.ALIGN_CENTER); cell6.setHorizontalAlignment(Element.ALIGN_CENTER); cell6.setBorderColor(new Color(0, 0, 0)); cell6.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell6); Cell cell7 = new Cell(new Phrase("完成标志", fontChinese)); cell7.setVerticalAlignment(Element.ALIGN_CENTER); cell7.setHorizontalAlignment(Element.ALIGN_CENTER); cell7.setBorderColor(new Color(0, 0, 0)); cell7.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell7); Cell cell8 = new Cell(new Phrase("控制措施完成时间", fontChinese)); cell8.setVerticalAlignment(Element.ALIGN_CENTER); cell8.setHorizontalAlignment(Element.ALIGN_CENTER); cell8.setBorderColor(new Color(0, 0, 0)); cell8.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell8); Cell cell9 = new Cell(new Phrase("控制措施牵头部门", fontChinese)); cell9.setVerticalAlignment(Element.ALIGN_CENTER); cell9.setHorizontalAlignment(Element.ALIGN_CENTER); cell9.setBorderColor(new Color(0, 0, 0)); cell9.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell9); Cell cell10 = new Cell(new Phrase("控制措施配合部门", fontChinese)); cell10.setVerticalAlignment(Element.ALIGN_CENTER); cell10.setHorizontalAlignment(Element.ALIGN_CENTER); cell10.setBorderColor(new Color(0, 0, 0)); cell10.setBackgroundColor(new Color(204, 153, 255)); aTable.addCell(cell10); for(int i=0;i<22;i++){ aTable.addCell(new Cell(i+"")); } document.add(aTable); document.add(new Paragraph("\n")); } /** * @param imgUrl 图片路径 * @param imageAlign 显示位置 * @param height 显示高度 * @param weight 显示宽度 * @param percent 显示比例 * @param heightPercent 显示高度比例 * @param weightPercent 显示宽度比例 * @param rotation 显示图片旋转角度 * @throws MalformedURLException * @throws IOException * @throws DocumentException */ public void insertImg(String imgUrl,int imageAlign,int height,int weight,int percent,int heightPercent,int weightPercent,int rotation) throws MalformedURLException, IOException, DocumentException{ // 添加图片 Image img = Image.getInstance(imgUrl); if(img==null) return; img.setAbsolutePosition(0, 0); img.setAlignment(imageAlign); img.scaleAbsolute(height, weight); img.scalePercent(percent); img.scalePercent(heightPercent, weightPercent); img.setRotation(rotation); document.add(img); } public void closeDocument() throws DocumentException{ this.document.close(); } public static void main(String[] args) throws DocumentException, IOException { WordTemplete wt = new WordTemplete(); wt.openDocument("d:\\dome1.doc"); wt.insertTitle("一、测试基本情况", 12, Font.BOLD, Element.ALIGN_CENTER); wt.insertContext("共识别出XXX个测试,XXX项测试行为,其中,违规类测试XX项,占测试总量的XX%,违约类测试XX项,占测试总量的XX%,侵权类测试XX项,占测试总量的XX%,怠于类测试XX项,占测试总量的XX%,不当类测试XX项,占测试总量的XX%。", 12, Font.NORMAL, Element.ALIGN_LEFT); wt.insertContext("根据测试测评结果,各等级测试数量及所占百分比分别为:一级测试共XX项,占测试总量的XX%;二级测试共XX项,占测试总量的XX%;三级测试共XX项,占测试总量的XX%;四级测试共XX项,占测试总量的XX%;五级测试共XX项,占测试总量的XX%。\n\n", 12, Font.NORMAL, Element.ALIGN_LEFT); wt.insertContext("测试定向分析结果如下:", 12, Font.NORMAL, Element.ALIGN_LEFT); wt.insertContext("① 部门角度测试分析", 12, Font.NORMAL, Element.ALIGN_LEFT); wt.insertImg("test.bmp", Image.ALIGN_CENTER, 12, 35, 50, 50, 50, 30); wt.insertContext("② 主体角度测试分析", 12, Font.NORMAL, Element.ALIGN_LEFT); wt.insertImg("test.bmp", Image.ALIGN_CENTER, 12, 35, 50, 60, 60, 30); wt.insertContext("③ 部门主体交叉角度测试分析", 12, Font.NORMAL, Element.ALIGN_LEFT); wt.insertImg("test.bmp", Image.ALIGN_CENTER, 50, 75, 100, 100, 100, 30); wt.insertContext("④ 业务活动角度测试分析", 12, Font.NORMAL, Element.ALIGN_LEFT); wt.insertImg("test.bmp", Image.ALIGN_CENTER, 12, 35, 50, 80, 80, 30); wt.insertTitle("二、重大测试清单", 12, Font.BOLD, Element.ALIGN_CENTER); wt.insertRiskTable(); wt.insertTitle("三、测试控制现状评估结果", 12, Font.BOLD, Element.ALIGN_CENTER); wt.insertRiskEvaluationTable(); wt.insertTitle("四、测试控制计划", 12, Font.BOLD, Element.ALIGN_CENTER); wt.insertRiskControlTable(); wt.closeDocument(); } }
评论
4 楼
贝塔ZQ
2016-09-20
实现导出word模板文件,可以用插件试试么,那么多插件的,PageOffice插件就是专门操作office文档的,事例代码也少,好理解,可以找他们官网了解了解的
3 楼
tangqingzhu
2012-08-29
请问Lz能定点插入图片或者表格、文字么??能不能给个QQ 。
2 楼
allmajor
2012-01-31
学习一下
1 楼
java_base
2010-11-12
你好,我最近在使用iText。用java写的。
我想在一个页面中定义好三个框,向里面填充数据,包括表格,图片,文本等。
我生成pdf模板的代码如下:
Document dm = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(dm, new FileOutputStream("D:/PDFTest/template.pdf"));
writer.setStrictImageSequence(true);
dm.open();
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
PdfContentByte cb = writer.getDirectContent();
PdfTemplate titleTemplate = cb.createTemplate(PageSize.A4.width(), 42);
PdfTemplate topTemplate = cb.createTemplate(PageSize.A4.width(), 400);
PdfTemplate bottomTemplate = cb.createTemplate(PageSize.A4.width(),400);
cb.addTemplate(titleTemplate, 0, 800);
cb.addTemplate(topTemplate, 0, 400);
cb.addTemplate(bottomTemplate, 0, 0);
dm.close();
我用
//需要生成后的PDF
FileOutputStream fos = new FileOutputStream("D:/PDFTest/Pdf_1.pdf");
/* 打开已经定义好字段以后的pdf模板 */
String TemplatePDF = "D:/PDFTest/template_top_bottom.pdf";
PdfReader reader = new PdfReader(TemplatePDF);
/* 将要生成的目标PDF文件名称 */
PdfStamper stamp = new PdfStamper(reader, fos);
/* 使用中文字体 */
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bf, 12, Font.NORMAL);
/* 取出报表模板中的所有字段 */
AcroFields form = stamp.getAcroFields();
这种方法不不能取出 模板pdf中的titleTemplate,topTemplate和bottomTemplate。
请教您,如何取得模板中定义的Pemplate。
麻烦您了~谢谢。
我想在一个页面中定义好三个框,向里面填充数据,包括表格,图片,文本等。
我生成pdf模板的代码如下:
Document dm = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(dm, new FileOutputStream("D:/PDFTest/template.pdf"));
writer.setStrictImageSequence(true);
dm.open();
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
PdfContentByte cb = writer.getDirectContent();
PdfTemplate titleTemplate = cb.createTemplate(PageSize.A4.width(), 42);
PdfTemplate topTemplate = cb.createTemplate(PageSize.A4.width(), 400);
PdfTemplate bottomTemplate = cb.createTemplate(PageSize.A4.width(),400);
cb.addTemplate(titleTemplate, 0, 800);
cb.addTemplate(topTemplate, 0, 400);
cb.addTemplate(bottomTemplate, 0, 0);
dm.close();
我用
//需要生成后的PDF
FileOutputStream fos = new FileOutputStream("D:/PDFTest/Pdf_1.pdf");
/* 打开已经定义好字段以后的pdf模板 */
String TemplatePDF = "D:/PDFTest/template_top_bottom.pdf";
PdfReader reader = new PdfReader(TemplatePDF);
/* 将要生成的目标PDF文件名称 */
PdfStamper stamp = new PdfStamper(reader, fos);
/* 使用中文字体 */
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bf, 12, Font.NORMAL);
/* 取出报表模板中的所有字段 */
AcroFields form = stamp.getAcroFields();
这种方法不不能取出 模板pdf中的titleTemplate,topTemplate和bottomTemplate。
请教您,如何取得模板中定义的Pemplate。
麻烦您了~谢谢。
发表评论
-
BufferedImage与byte[]互转
2012-06-18 14:51 1101转载自:http://www.cnblogs.com/XL-L ... -
Java定时任务的实现(转)
2011-07-01 10:02 881本例依据Java自身提供的接口实现,通过监听器(Listen ... -
JVM内存管理的基础知识----栈,堆,常量池
2011-06-22 16:09 1652读书笔记: 涉及名词:寄存器,栈,堆,静态域,常量池,非RA ... -
关于jvm的内存限制的问题的解决办法
2010-06-09 14:27 998jdk编译器对内存的支持不同,client状态和server状 ... -
java实现的关键路径的算法
2010-06-09 14:13 4990基本概念: 在关键路径 ... -
java写的从ftp上找到文件并把文件里的数据插入到数据库的工具类
2010-06-09 14:04 3367因为有个导入数据的需 ... -
jcexporter的jar包
2010-06-09 13:47 808jcexporter都是用java6编译过的,现在反编译了一个 ... -
应用中引入json时用到的jar包
2010-05-11 17:07 936应用中引入json时用到的jar包 -
java调用web2pic实现整站页面截屏(只能windows)
2010-05-11 16:49 1702java调用web2pic实现截屏(只能windows) -
重构-改善既有代码的设计
2010-02-25 16:39 804重构-改善既有代码的设计(繁体中文版) -
javaEE学习笔记
2010-01-22 12:51 917javaEE学习笔记
相关推荐
总的来说,"JAVA ITEXT 导出试卷"是一个利用Java和iText库实现的自动化试卷生成系统。它涉及的知识点包括Java编程基础、iText库的使用、PDF文档结构的理解以及可能的数据解析和文件操作。通过这样的系统,教育从业者...
在这个例子中,我们将深入探讨如何利用IText库来导出Word文档,以便于在各种场合下生成定制化的报告、合同或任何其他需要文字处理的文档。 首先,了解IText库的基本概念是非常重要的。IText提供了丰富的API,允许...
本篇文章将详细讲解如何利用iText库导出Word文档,以及相关的编程知识点。 首先,我们需要了解iText的基本概念。iText是一个开源的Java库,由iText Group NV开发,它允许开发者在Java或.NET环境中生成、修改和处理...
标题提到的"Java通过IText导出word和pdf所有jar",意味着这个压缩包可能包含了一系列必要的Java库,这些库用于通过IText库导出PDF以及可能通过其他库(如Apache POI)导出Word文档。"包括spring相关jar"表明这个包还...
由于工作需要,小研究了下itext,在此和大家分享下,互相探讨,也希望能帮得上哪位朋友。...功能:java生成word,支持中文,可以插入图片,可以添加超链 接连到其他网址。 内附代码及详细说明和需要的jar包
本文将深入探讨如何使用Java来根据模板导出包含统计图的PDF文档。主要涉及的技术包括iText库、FreeMarker模板引擎以及可能的数据可视化工具。 首先,iText是一个强大的Java库,专门用于创建和操作PDF文档。它提供了...
本示例主要展示了如何在Struts2框架下利用IText库动态导出Word文档。IText是一个开源Java库,它允许程序员在服务器端生成PDF、HTML、XML以及Word文档。在处理大量或复杂的数据时,动态导出Word文档非常有用,例如...
iText是一个强大的Java类库,专门用于生成和处理PDF(Portable Document Format)文档。这个库在IT领域中广泛应用,因为它提供了灵活且易于使用的API,使得开发者可以轻松地创建、编辑和操作PDF文件。iText不仅限于...
本文将深入探讨如何利用Java技术结合Freemarker模板引擎实现带格式的Word文档导出,以满足客户对文档标准化、可打印且不变形的严格要求。 ### 1. 传统方法的局限性 在Java环境中,Apache POI和iText等库是常见的...
Java导出Word的插件是一...总结,Java导出Word的插件是Java开发者用来方便地处理Word文档的工具,通过模板机制可以高效地创建和导出文档。了解和掌握这些工具的使用方法,对于提升Java应用的文档处理能力具有重要意义。
在Java中,我们可以利用iText7轻松地生成具有复杂结构的PDF文件,包括添加页码、创建目录等。首先,为了在Gradle项目中使用iText7,你需要在项目的`build.gradle`文件中添加依赖。如下所示: ```groovy ...
JAVA整合GWT框架,利用ITEXT插件,实现从SQL2008中导出数据到已有的模板中。资源里附有PDF模板,构建PDF模板的WORD文件,以及PDF模板所要做成PDF文件的图片式样。该资源还实现了导出SQL2008某行某列的数据到PDF模板...
总的来说,"导出word和pdf模板示例文件"这一项目展示了如何利用FreeMarker和iText5的组合,实现动态数据驱动的文档生成。这不仅涉及到了模板引擎的使用,还涵盖了文本到PDF的转换技术。这样的技能在IT行业中的报表...
Java生成Word文档是一种常见的需求,特别是在企业级应用中,例如报告生成、数据导出等。在Java中,我们可以使用各种库来实现这个功能,比如Apache POI,它是一个开源项目,提供了API来处理Microsoft Office格式的...
1. **Freemarker模板解析与数据填充导出Word文档**: Freemarker是一个强大的模板引擎,它允许开发者用简单的文本格式编写模板,并结合数据模型生成输出。在这个项目中,`FreeMarkUtils.java`可能包含了使用...
1. Word 模板导出:easypoi支持使用模板导出Word文档,模板可以是已有的Word文档,也可以是自定义的模板。 第三章 PDF 导出 1. PDF 导出:easypoi支持将数据导出到PDF文件中,支持多种PDF导出方式。 第四章 HTML ...
- **优点**:作为办公软件,易于设计文档模板,支持Java调用实现Word转换成PDF。 - **缺点**:需预先安装OpenOffice,设计PDF模板样式,程序填充变量过程繁琐。 #### iText - **优点**:满足基本需求,提供了丰富...