解析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();
}
}
}

相关文章推荐

python解析html提取数据,并生成word文档

今天试着用ptyhon抓取一下网页上的
  • how8586
  • how8586
  • 2014年09月19日 17:20
  • 10520

关于用html语言生成word格式文档的视图问题

接到一个需求,要生成word格式的说明文档,并且要和本地的office版本无关。一开始还是考虑用com组件编程,想写一个工厂,用来判断当前系统的office版本,以实现兼容,但浅尝辄止。主要是在命名空...
  • suneboy
  • suneboy
  • 2011年09月13日 11:19
  • 1731

php中如何把html中的内容生成到word文档

1:在php中如何把html中的内容生成到word文档中    2:php把html中的内容生成到word文档中时,不居中显示问题,即会默认按照web视图进行显示。 Word.class.php:...

apache poi解析word(doc)文档成xml及导出成html

//遇到解析word文档的需求,文档格式不定,在网上看了好多文章,大多是简单应用api解析内容,要不就是需要windows环境,还有个在线编辑的第三方的,不太符合本人需求,目前实现了doc的,docx...

word文档转换为PDF、jpg、HTML、txt、swf

好记性不如烂笔头,写下来以后参考  word转换为PDF   ///                   ///          /// 把Word文件转换成为PDF格式文件      ...
  • chhdxzq
  • chhdxzq
  • 2015年08月21日 19:15
  • 856

C# 将Word文档转换为HTML

日常生活中,我们总是在Word中进行文字的编辑,它不仅能够保存Text文本,还可以保存文本的格式等等。那么如果我要将一Word文档上的内容展示在网页上,该怎么做呢?这里我提供了一个小工具,你可以将Wo...

通过QT 转换html文件为word文档

void onPrintBtn(){ //1. open SaveDialog and get a file name if (last_path_.isEmpty()) { QStri...

使用maven管理jacob.jar对excel、word文档进行转换为html细节描述

使用maven管理jacob.jar对excel、word文档进行转换为html细节描述

poi转excel,word文档为html

poi转excel,word为html,支持2003,2007等版本。 1:excel转html import java.io.BufferedWriter; import java.io.Fil...

JAVA:借用OpenOffice将上传的Word文档转换成Html格式

为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl...
  • shang02
  • shang02
  • 2016年05月19日 16:28
  • 347
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解析html 生成word文档
举报原因:
原因补充:

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