`
zl-2577
  • 浏览: 80229 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用Itext画模板导出word,纯java实现

阅读更多
最近项目中要用到导出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)
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();
	}
}

  • 大小: 26.7 KB
分享到:
评论
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。

麻烦您了~谢谢。

相关推荐

    JAVA ITEXT 导出试卷

    总的来说,"JAVA ITEXT 导出试卷"是一个利用Java和iText库实现的自动化试卷生成系统。它涉及的知识点包括Java编程基础、iText库的使用、PDF文档结构的理解以及可能的数据解析和文件操作。通过这样的系统,教育从业者...

    利用IText导出word的例子

    在这个例子中,我们将深入探讨如何利用IText库来导出Word文档,以便于在各种场合下生成定制化的报告、合同或任何其他需要文字处理的文档。 首先,了解IText库的基本概念是非常重要的。IText提供了丰富的API,允许...

    利用IText导出word

    本篇文章将详细讲解如何利用iText库导出Word文档,以及相关的编程知识点。 首先,我们需要了解iText的基本概念。iText是一个开源的Java库,由iText Group NV开发,它允许开发者在Java或.NET环境中生成、修改和处理...

    Java通过IText导出word和pdf所有jar

    标题提到的"Java通过IText导出word和pdf所有jar",意味着这个压缩包可能包含了一系列必要的Java库,这些库用于通过IText库导出PDF以及可能通过其他库(如Apache POI)导出Word文档。"包括spring相关jar"表明这个包还...

    java itext word 图片 网址超链接

    由于工作需要,小研究了下itext,在此和大家分享下,互相探讨,也希望能帮得上哪位朋友。...功能:java生成word,支持中文,可以插入图片,可以添加超链 接连到其他网址。 内附代码及详细说明和需要的jar包

    java根据模板导出PDF详细教程(包含统计图)

    本文将深入探讨如何使用Java来根据模板导出包含统计图的PDF文档。主要涉及的技术包括iText库、FreeMarker模板引擎以及可能的数据可视化工具。 首先,iText是一个强大的Java库,专门用于创建和操作PDF文档。它提供了...

    Struts2+IText动态导出Word示例源码

    本示例主要展示了如何在Struts2框架下利用IText库动态导出Word文档。IText是一个开源Java库,它允许程序员在服务器端生成PDF、HTML、XML以及Word文档。在处理大量或复杂的数据时,动态导出Word文档非常有用,例如...

    Itext实现自动生成pdf word文件

    iText是一个强大的Java类库,专门用于生成和处理PDF(Portable Document Format)文档。这个库在IT领域中广泛应用,因为它提供了灵活且易于使用的API,使得开发者可以轻松地创建、编辑和操作PDF文件。iText不仅限于...

    java带格式导出WORD文档

    本文将深入探讨如何利用Java技术结合Freemarker模板引擎实现带格式的Word文档导出,以满足客户对文档标准化、可打印且不变形的严格要求。 ### 1. 传统方法的局限性 在Java环境中,Apache POI和iText等库是常见的...

    java导出word的插件

    Java导出Word的插件是一...总结,Java导出Word的插件是Java开发者用来方便地处理Word文档的工具,通过模板机制可以高效地创建和导出文档。了解和掌握这些工具的使用方法,对于提升Java应用的文档处理能力具有重要意义。

    Java 使用iText7生成带页码的PDF文件(同时生成目录,但是不会合并两个PDF)

    在Java中,我们可以利用iText7轻松地生成具有复杂结构的PDF文件,包括添加页码、创建目录等。首先,为了在Gradle项目中使用iText7,你需要在项目的`build.gradle`文件中添加依赖。如下所示: ```groovy ...

    java整合GWT实现导出数据到已有的PDF模板中

    JAVA整合GWT框架,利用ITEXT插件,实现从SQL2008中导出数据到已有的模板中。资源里附有PDF模板,构建PDF模板的WORD文件,以及PDF模板所要做成PDF文件的图片式样。该资源还实现了导出SQL2008某行某列的数据到PDF模板...

    导出word和pdf模板示例文件

    总的来说,"导出word和pdf模板示例文件"这一项目展示了如何利用FreeMarker和iText5的组合,实现动态数据驱动的文档生成。这不仅涉及到了模板引擎的使用,还涵盖了文本到PDF的转换技术。这样的技能在IT行业中的报表...

    java生成word,包括word表格,表格插入图片,jar包都在了

    Java生成Word文档是一种常见的需求,特别是在企业级应用中,例如报告生成、数据导出等。在Java中,我们可以使用各种库来实现这个功能,比如Apache POI,它是一个开源项目,提供了API来处理Microsoft Office格式的...

    word转pdf、word导出、pdf加水印

    1. **Freemarker模板解析与数据填充导出Word文档**: Freemarker是一个强大的模板引擎,它允许开发者用简单的文本格式编写模板,并结合数据模型生成输出。在这个项目中,`FreeMarkUtils.java`可能包含了使用...

    easypoi教程总结

    1. Word 模板导出:easypoi支持使用模板导出Word文档,模板可以是已有的Word文档,也可以是自定义的模板。 第三章 PDF 导出 1. PDF 导出:easypoi支持将数据导出到PDF文件中,支持多种PDF导出方式。 第四章 HTML ...

    JAVA动态生成word和pdf

    - **优点**:作为办公软件,易于设计文档模板,支持Java调用实现Word转换成PDF。 - **缺点**:需预先安装OpenOffice,设计PDF模板样式,程序填充变量过程繁琐。 #### iText - **优点**:满足基本需求,提供了丰富...

Global site tag (gtag.js) - Google Analytics