使用IText实现office Word文档导出

package officeWordDoc;

import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;

import com.lowagie.text.BadElementException;
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.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.rtf.RtfWriter2;
import com.lowagie.text.rtf.style.RtfParagraphStyle;


/**
* @ClassName:WordDocUtilsDemo
* @Description:officeWord文档服务类,使用IText实现officeWord文档导出
* 			需要jar包:IText2.1.7(iReport.jar;iText-2.1.7.jar;iTextAsian.jar;itext-rtf-2.1.7.jar)
* @date:2017年5月8日
* 修改备注:
*/
public class WordDocDemo_IText {
    private Document document;
  
    public Document getDocument() {  
        return document;  
    }  
  
    public void setDocument(Document document) {  
        this.document = document;  
    }  
  
    public WordDocDemo_IText(){  
        this.document = new Document(PageSize.A4);//设置纸张大小
          
    }  
    /** 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
     * @param filePath  要操作的文档路径,若文档不存在会自动创建
     * @throws com.lowagie.text.DocumentException
     * @throws java.io.IOException
     */  
    public void openDocument(String filePath){  
        //建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中  
        try {
			RtfWriter2.getInstance(this.document, new FileOutputStream(filePath));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}  
        this.document.open();
    }
    
    /**
     * @Description:创建字体样式(字体大小、样式、颜色)
     * @param ttf 字体种类 	eg:C:\Windows\Fonts\FangSong_GB2312.ttf
     * @param fontsize 字体大小
     * @param fontStyle 字体样式
     * @param color 颜色
     * @return 字体样式
     * @author: 张路(zhanglu@mail.taiji.com.cn)
     * @date: 2017年5月8日 下午1:59:43
     */
     public Font createFont(String ttf, int fontsize, int fontStyle, Color color){
     	BaseFont bf = null;
         try {
         	bf = BaseFont.createFont(ttf, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
         	//设置中文字体  
            //BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
 		} catch (DocumentException | IOException e) {
 			e.printStackTrace();
 		}
     	Font font = new Font(bf, fontsize, fontStyle);
     	font.setColor(color);
     	font.setSize(14);
     	return font;
     }
      
    /** 
     * @param titleStr 标题
     * @param fontsize 字体大小 
     * @param fontStyle 字体样式 
     * @param elementAlign 对齐方式 
     * @throws com.lowagie.text.DocumentException
     */  
    public void insertTitle(String titleStr,Font titleFont ,int elementAlign){  
        //创建段落
        Paragraph title = new Paragraph(titleStr);  
        // 设置标题格式对齐方式  
        title.setAlignment(elementAlign);  
        title.setFont(titleFont);
        try {
			this.document.add(title);
		} catch (DocumentException e) {
			e.printStackTrace();
		}  
    }

    /**
     * 设置带有目录格式的标题(标题1格式)
     * @param rtfParagraphStyle 标题1样式
     * @param titleStr 标题
     * @throws DocumentException
     */
    public void insertTitlePattern(String titleStr, RtfParagraphStyle rtfParagraphStyle){
    	//创建段落
        Paragraph title = new Paragraph(titleStr);
        title.setFont(rtfParagraphStyle);
        try {
			this.document.add(title);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
    }  
    
    /**
     * 设置带有目录格式的标题(标题2格式)
     * @param titleStr 标题
     * @param rtfParagraphStyle 标题2样式
     * @throws DocumentException
     */
    public void insertTitlePatternSecond(String titleStr,RtfParagraphStyle rtfParagraphStyle){
        Paragraph title = new Paragraph(titleStr);
        // 设置标题格式对齐方式  
        title.setFont(rtfParagraphStyle);
        try {
			this.document.add(title);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
    }  
    
    /** 
     * @param tableName 标题 
     * @param fontsize 字体大小 
     * @param fontStyle 字体样式 
     * @param elementAlign 对齐方式 
     * @throws com.lowagie.text.DocumentException
     */  
    public void insertTableName(String tableName,Font titleFont,int elementAlign){  
        titleFont.setColor(102, 102, 153);
        Paragraph title = new Paragraph(tableName);
        // 设置标题格式对齐方式  
        title.setAlignment(elementAlign);  
        title.setFont(titleFont);
        try {
			this.document.add(title);
		} catch (DocumentException e) {
			e.printStackTrace();
		}  
    }  
    
    /** 
     * @param contextStr 内容 
     * @param fontsize 字体大小 
     * @param fontStyle 字体样式 
     * @param elementAlign 对齐方式 
     * @throws com.lowagie.text.DocumentException
     */  
    public void insertContext(String contextStr,Font contextFont,int elementAlign){
        Paragraph context = new Paragraph(contextStr);  
        //设置行距  
        context.setLeading(3f);
        // 正文格式对齐 方式
        context.setAlignment(elementAlign);
        context.setFont(contextFont);  
        // 离上一段落(标题)空的行数  
        context.setSpacingBefore(1);
        // 设置第一行空的列数  
        context.setFirstLineIndent(20);  
        try {
			document.add(context);
		} catch (DocumentException e) {
			e.printStackTrace();
		}  
    }


    /**
     * @param imgUrl 图片路径
     * @param imageAlign 显示位置
     * @param height 显示高度
     * @param weight 显示宽度
     * @param percent 显示比例
     * @param heightPercent 显示高度比例
     * @param weightPercent 显示宽度比例
     * @param rotation 显示图片旋转角度
     * @throws java.net.MalformedURLException
     * @throws java.io.IOException
     * @throws com.lowagie.text.DocumentException
     */
    public void insertImg(String imgUrl,int imageAlign,int height,
    		int weight,int percent,int heightPercent,int weightPercent,int rotation){  
        //添加图片  
        Image img = null;
		try {
			img = Image.getInstance(imgUrl);
		} catch (BadElementException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}  
        if(img==null)  
            return;  
        img.setAbsolutePosition(0, 0);  
        img.setAlignment(imageAlign);  
        img.scaleAbsolute(height, weight);
        img.scaleAbsolute(1000, 1000);
        img.scalePercent(percent);
        img.scalePercent(heightPercent, weightPercent);  
        img.setRotation(rotation);  
        try {
			document.add(img);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
    }

    /**
     * 添加简单表格
     * @param column 表格列数(必须)
     * @param row 表格行数
     * @throws DocumentException
     */
    public void insertSimpleTable(int column,int row){
        Table table = null;
		try {
			table = new Table(column);
		} catch (BadElementException e) {
			e.printStackTrace();
		}//列数必须设置,而行数则可以按照个人要求来决定是否需要设置
        table.setAlignment(Element.ALIGN_CENTER);// 居中显示
        table.setAlignment(Element.ALIGN_MIDDLE);// 纵向居中显示
        table.setAutoFillEmptyCells(true);// 自动填满
        table.setBorderColor(new Color(0, 125, 255));// 边框颜色
        table.setBorderWidth(1);// 边框宽度
        table.setSpacing(2);// 衬距,
        table.setPadding(2);// 即单元格之间的间距
        table.setBorder(20);// 边框
        for (int i = 0; i < column*3; i++) {
            table.addCell(new Cell(""+i));
        }
        try {
			document.add(table);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
    }
    
    /**
     * 在操作完成后必须关闭document,否则即使生成了word文档,打开也会发生错误
     * @throws DocumentException
     */
    public void closeDocument(){  
        this.document.close();  
    }  
    
    
    public static void main(String[] args) {
    	WordDocDemo_IText wordUtils = new WordDocDemo_IText();
     	String fileName = "关于"+"dddd"+"的情况报告.doc";
     	String filePath = "e://exportOffice//eventInfoReceive//";
     	File file = new File(filePath);
     	if (!file.exists()) {
			file.mkdirs();
		}
     	Font _font = wordUtils.createFont("C:\\Windows\\Fonts\\FangSong_GB2312.ttf",12,Font.BOLD, new Color(255, 0, 0));
     	wordUtils.openDocument(filePath+fileName);
		wordUtils.insertTitle("word文档标题", _font, Element.ALIGN_CENTER);
		wordUtils.insertContext("市政府应急办:\n" +
		                        "      2016年9月29日10时52分许,位于XX区XXXXXXXXXXXXXXXXXXXXXXXXXXX"
		                        + "XXXXXXXXXXXXXXXXXXXword文档内容XXXXXXXXXXXXXXXXX"
		                        + "YYYYYYYYYYYYYYYYYYYword文档内容YYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
		                        + "XXXXXXXXXXXXXXXXXXword文档内容XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
		                        + "XXXXXXXXXXXXXXXXXXXword文档内容XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
		                        + "YYYYYYYYYYYYYYYYYYword文档内容YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
		                        + "RRRRRword文档内容RRRRRRRR\n", _font, Element.ALIGN_LEFT);
		wordUtils.insertContext("市政府应急办:\n" +
		        "      2016年9月29日10时52分许,位于XX区\n", _font, Element.ALIGN_LEFT);
		wordUtils.insertContext("市政府应急办:\n" +
		       "      2016年9月29日10时52分许,位于XX区\n", _font, Element.ALIGN_LEFT);
		wordUtils.closeDocument();
	}
    
}


Java java.awt中使用IText导出word文档时字体设置,


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值