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文档时字体设置,