首先下载iText-2.0.8.jar包。
可将HTML内容转化成word文件,包括图片,可设置图片的像素。
详细代码如下:
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.StringReader;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
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.html.simpleparser.HTMLWorker;
import com.lowagie.text.html.simpleparser.StyleSheet;
import com.lowagie.text.rtf.RtfWriter2;
import com.lowagie.text.rtf.style.RtfParagraphStyle;
/**
* 写入word文件
*
*/
public class DocUtil {
protected static Log log = LogFactory.getLog(DocUtil.class);
/**
* 写入文档,其中content为html格式内容,<img>图片标签路径为绝对路径,且该图片一定要存在,否则会抛异常
* @param content 写入的内容
* @param docFilePath 写入的doc文件
* @throws Exception
*/
public static void writeDocument(String content, String docFilePath) throws Exception{
OutputStream out = new FileOutputStream(docFilePath);
Document document = new Document(PageSize.A4);
RtfWriter2.getInstance(document, out);
document.open();
Paragraph context = new Paragraph();
StyleSheet ss = new StyleSheet();
List htmlList = HTMLWorker.parseToList(new StringReader(content), ss);
for (int i = 0; i < htmlList.size(); i++) {
Element e = (com.lowagie.text.Element) htmlList.get(i);
context.add(e);
}
document.add(context);
document.close();
}
/**
* 写入文档,其中titles,flag,content为相等长度数组
* @param mainTitile 文档的大主标题
* @param titles 文档的标题
* @param flag 文档标识符,1为标题1,2为标题2,3为标题3
* @param content 写入的内容,为HTML格式
* @param docFilePath 写入的doc文件
* @throws Exception
*/
public static void writeDocument(String mainTitile,String[] titles,int[] flag, String[] contents, String docFilePath) throws Exception{
OutputStream out = new FileOutputStream(docFilePath);
Document document = new Document(PageSize.A4, 90, 90, 72, 72);
RtfWriter2 rw = RtfWriter2.getInstance(document, out);
rw.getDocumentSettings();
document.open();
document.addCreationDate();
Font titleFont = new Font(Font.NORMAL, 24, Font.BOLD);
//设置标题样式,并添加入文档
Paragraph title = new Paragraph(mainTitile);
title.setAlignment(Element.ALIGN_CENTER);
title.setFont(titleFont);
title.setSpacingAfter(20f);
title.setSpacingBefore(20f);
document.add(title);
int length = 0;
if(titles.length>flag.length){
length = flag.length;
} else {
length = titles.length;
}
if(length > contents.length){
length = contents.length;
}
//循环遍历数组信息
for(int index=0; index<length; index++){
//添加标题
if(titles[index]!=null && titles[index].length()>0){
Paragraph titleParagraph = new Paragraph(titles[index]);
titleParagraph.setFont(getTitleStyle(flag[index]));
document.add(titleParagraph);
}
//添加内容
if(contents[index]!=null && contents[index].length()>0){
Paragraph context = new Paragraph();
StyleSheet ss = new StyleSheet();
List htmlList = HTMLWorker.parseToList(new StringReader(contents[index]), ss);
for (int i = 0; i < htmlList.size(); i++) {
Element e = (Element) htmlList.get(i);
context.add(e);
for(int j=0; j<e.getChunks().size(); j++){
Chunk chunk=(Chunk)e.getChunks().get(j);
Image image=chunk.getImage();
if(image!=null){
if(image.getWidth()<550){
image.scalePercent(75);
}else{
image.scalePercent(75*550/image.getWidth());
}
}
}
}
document.add(context);
}
}
document.close();
}
/**
* 获取标题样式
* @param flag
* @return
*/
public static RtfParagraphStyle getTitleStyle(int flag){
RtfParagraphStyle rtfGsBt = null;
int titleFontSize=14;
if (flag == 1) {
rtfGsBt = RtfParagraphStyle.STYLE_HEADING_1;
titleFontSize = 20;
} else if (flag == 2) {
rtfGsBt = RtfParagraphStyle.STYLE_HEADING_2;
titleFontSize = 18;
} else if(flag == 3) {
rtfGsBt = RtfParagraphStyle.STYLE_HEADING_3;
titleFontSize = 16;
} else{
rtfGsBt = RtfParagraphStyle.STYLE_NORMAL;
titleFontSize = 14;
}
rtfGsBt.setAlignment(Element.ALIGN_LEFT);
rtfGsBt.setLineLeading(12+titleFontSize);
rtfGsBt.setSize(titleFontSize);
rtfGsBt.setSpacingBefore(20);
rtfGsBt.setSpacingAfter(20);
return rtfGsBt;
}
public static void main(String[] args) throws Exception {
DocUtil.writeDocument("<h1>上传的图片</h1><img src='F:\\Edmin\\nopic.jpg'>", "e://a.doc");
System.out.println("ok");
}
}