html转pdf,html转word

项目需求

项目需要根据数据自动去生成数据报告,报告最好可以在线浏览,可以导出pdf和docx。

实现思路

使用freeMark模板指定数据模板并生成相关的html。
html->pdf使用 itext和flying saucer生成pdf。
html->docx使用docx4j生成docx。

具体实现

freemark就不说了,参照相关文档。

  1. flying saucer 是1个xhtml和css2.1解析器,能够正确的解析html并生成pdf,img,甚至是java awt的浏览功能。

Flying Saucer is an XML/CSS renderer, which means it takes XML files
as input, applies formatting and styling using CSS, and generates
a rendered representation of that XML as output. The output may go to
the screen (in a GUI), to an image, or to a PDF file. Because we
believe most people will be interested in re-using their knowledge of
web layout, our main target for content is XHTML 1.0 (strict), an XML
document format that standardizes HTML.

由于官方的原生jar,不支持中文需要修改,网上已有大神进行了修改

大神 http://my.oschina.net/lemonzone2010/blog/179086
主要代码如下


ITextRenderer renderer = (ITextRenderer) pool.borrowObject();
renderer.setDocument(uri);
renderer.layout();
renderer.createPDF(fos);
  1. html生成word用docx
    主要代码如下

    DocxRenderer docxRenderer = new DocxRenderer();
    String url = “http://127.0.0.1/report.html”;
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
    XHTMLImporterImpl xmlImp = new XHTMLImporterImpl(wordMLPackage);
    xmlImp.setRenderer(docxRenderer);
    List elements = xmlImp.convert(new URL(url));
    wordMLPackage.getMainDocumentPart().getContent().addAll(elements);
    File file = new File(“d:/docx4j/” + System.currentTimeMillis()+ “.docx”);
    file.createNewFile();
    wordMLPackage.save(file);

你可能感兴趣的:(html转pdf,html转word)