解析html 生成word文档

原创 2015年11月21日 11:24:53

工具:

jsoup+itext

iTextAsian.jar itext-rtf-2.1.7.jar iText-2.1.7.jar jsoup-1.8.3.jar

html内容

<p>
adfadfs<img src="/lab-app/pics/image/20151121/20151121105307_666.jpg" alt="" />
</p>
<p>
asdfadfasdf
</p>
<p>
<img src="/lab-app/pics/image/20151121/20151121105324_144.jpg" alt="" />
</p>

解析html标签
public class HtmlToStringUtils {
public static List<String> htmlStringToList(String content) {
List<String> htmls = new ArrayList<String>();
Document doc = Jsoup.parse(content);
Elements ele = doc.getElementsByTag("p");
for (Element e : ele) {
if (e.text() != null) {
htmls.add(e.text());
}
if (e.getElementsByTag("img").size() > 0) {
Elements imgs = e.getElementsByTag("img");
for (Element img : imgs) {
if (img.attr("src").length() > 0) {
htmls.add("dy_doc::img=" + img.attr("src"));
}
}
}
}
return htmls;
}
}

根据具体的类生成文档

public class CreateCoursewareToWord {

private Document document;
private String picpath;
private String docpath;


public CreateCoursewareToWord(String picpath,String docpath){
this.document = new Document(PageSize.A4);
this.picpath = picpath;
this.docpath = docpath;
}

public void startCreateWord(Courseware courseware){
try {
RtfWriter2.getInstance(document,new FileOutputStream(docpath+courseware.getName()+".doc"));
document.open();
writeHead(courseware.getName(),document);
writeTitleToWord("111",courseware.getName(),document);
writeTitleToWord("222",courseware.getCourse().getName(),document);
writeMultiTitleToWord("333",HtmlToStringUtils.htmlStringToList(courseware.getDesc()),document);
writeMultiTitleToWord("444",HtmlToStringUtils.htmlStringToList(courseware.getTarget()),document);
writeMultiTitleToWord("555",HtmlToStringUtils.htmlStringToList(courseware.getDevice()),document);
writeMultiTitleToWord("666",HtmlToStringUtils.htmlStringToList(courseware.getSteps()),document);

} catch (FileNotFoundException e) {
e.printStackTrace();
} finally{
document.close();
}

}


public  void writeTitleToWord(String title,String content,Document document){
try {
Paragraph p = new Paragraph(title+":"+content, new Font(Font.NORMAL, 13,
Font.NORMAL, new Color(0, 0, 0)));
p.setAlignment(0);
document.add(p);
// document.add(new Paragraph(content));
} catch (DocumentException e) {
e.printStackTrace();
}
}

public  void writeMultiTitleToWord(String title,List<String> content,Document document){
try {
Paragraph p = new Paragraph(title, new Font(Font.NORMAL, 13,
Font.BOLD, new Color(0, 0, 0)));
p.setAlignment(0);
document.add(p);
for(int i=0;i<content.size();i++){
if(content.get(i).contains("dy_doc::img=")){
String path = content.get(i).trim();
int position = path.indexOf("/image/");
path = path.substring(position+1, path.length());
String[] paths = path.split("/");
String imagepath = picpath+File.separator;
for(int k=0;k<paths.length;k++){
if(k!=paths.length-1){
imagepath+=paths[k]+File.separator;
}else{
imagepath+=paths[k];
}
}
Image img = Image.getInstance(imagepath);
img.setAbsolutePosition(0, 0);
document.add(img);
}else{
document.add(new Paragraph(content.get(i).trim()));
}

}
} catch (Exception e) {
e.printStackTrace();
}
}

public  void writeHead(String head,Document document){
try {
Paragraph p = new Paragraph(head, new Font(Font.NORMAL, 16,
Font.BOLD, new Color(0, 0, 0)));
p.setAlignment(1);
document.add(p);
} catch (DocumentException e) {
e.printStackTrace();
}
}
}

如何在线生成Word文档?一种极简,极强大的方法,支持图片表格等各种格式

大家在日常工作中会遇到这样的情况,在线给数万人生成一个证书、成绩单什么的,而且要求保存为word文档让大家下载。 难道我们要去学习word的编码格式?难道要去找一个word读写库?太复杂了!我们其实只...
  • maray
  • maray
  • 2015年03月26日 20:33
  • 3549

POI把html写入word doc文件

直接把Html文本写入到Word文件 获取查看页面的body内容和引用的css文件路径传入到后台。把对应css文件的内容读取出来。利用body内容和css文件的内容组成一个标准格式的Html文本...
  • lcczzu
  • lcczzu
  • 2015年07月13日 14:44
  • 1242

js生成word文档有关资料

             单元格1 单元格2 单元格3 单元格4 单元格合并test function MakeWord() {  var word = new ActiveXObject("Word...
  • helanye
  • helanye
  • 2009年07月12日 22:54
  • 9052

SpringMVC中使用FreeMarker生成Word文档

FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具,它不是面向最终用户的,而是一个Java类库,是一款程序员可...
  • hundan_520520
  • hundan_520520
  • 2017年02月03日 17:02
  • 4415

Android使用模板生成Word文档并查看

Android想要使用模板生成Word文档需要借助,Apache 公司推出的 Apache POI,这个是官方下载地址:http://poi.apache.org/download.html,这是CS...
  • ZhangLei280
  • ZhangLei280
  • 2017年10月31日 11:07
  • 413

Java POI 生成Word文档

Java POI方式生成word文件。
  • zhouseawater
  • zhouseawater
  • 2017年01月09日 15:31
  • 10735

Android 使用模板生成Word文档,支持手机直接查看word

最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放...
  • u011916937
  • u011916937
  • 2015年11月28日 17:00
  • 6327

java 生成word文档

转载自:http://18810098265.iteye.com/blog/2056122 最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar...
  • zhangzhangjava
  • zhangzhangjava
  • 2016年10月26日 18:51
  • 8890

用C++生成WORD文档

参考的两个地址如下: 用Visual C++操纵MS Word: http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028697.html ...
  • m372897500
  • m372897500
  • 2012年03月02日 14:39
  • 5237

HTML生成word文档

将HTML生成为word文档,通常想到的都是poi、Jacob、freemaker这些框架,但是,我最近在项目中由于业务需要,要将HTML生成为word,最先我想到的也是通过POI这些来生成,但后面我...
  • hero_lxz
  • hero_lxz
  • 2017年08月17日 10:34
  • 493
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解析html 生成word文档
举报原因:
原因补充:

(最多只允许输入30个字)