H_thor
2012-04-09 09:54
浏览 507
已采纳

java 生成word文档并且在线预览的问题

我遇到了这样一个棘手问题,请求各位帮助。
需求:生成有固定格式的word文档(文字报告类型),然后再将该word文档实现在线预览。
我想到的解决办法是先利用freemarker模板生成word(网上盛行),然后再用jodconverter将word转为pdf,然后再用swftools转换pdf为swf,用flexpaper实现在线预览。然后问题出现了,用freemarker生成的word本质是wordml类型的,无法转化为pdf,大家有没有什么好的建议,请不吝赐教。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • iteye_3843 2012-04-09 15:12
    已采纳

    用Apache POI library不行吗?

    已采纳该答案
    打赏 评论
  • c_sunny 2012-04-09 12:01

    将word文档转成html,直接显示

    打赏 评论
  • iteye_5734 2012-04-10 17:21

    富文本?
    用iText或者PD4ML直接转换为pdf

    [code="java"]
    String outputFile = "D:/Test/demo_3.pdf";
    OutputStream os = new FileOutputStream(outputFile);
    ITextRenderer renderer = new ITextRenderer();
    ITextFontResolver fontResolver = renderer.getFontResolver();
    fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
    StringBuffer html = new StringBuffer();
    // DOCTYPE 必需写否则类似于 这样的字符解析会出现错误

    html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");

    html.append("").

    append("

    ")

    .append("")

    .append("body {font-family: SimSun;}")

    .append("")

    .append("");

    //html.append("
    支持中文!
    ");

    String str = htmlStream();
    html.append(str);
    html.append("");

    System.out.println(html.toString());
    renderer.setDocumentFromString(html.toString());
    renderer.getSharedContext().setBaseURL("file:/E:/workspace/yjsas/WebRoot/images/");
    renderer.layout();
    renderer.createPDF(os);
    os.close();
    [/code]

    [code="java"]
    PD4ML pd4ml = new PD4ML();
    pd4ml.setHtmlWidth(1024);
    pd4ml.setPageSize(PD4Constants.A4);
    pd4ml.setPageInsetsMM(new Insets(20, 10, 10, 10));
    pd4ml.addStyle("BODY {margin: 0; font-family:MSJH}", true);
    pd4ml.useTTF("java:fonts", true);
    pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312");
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    pd4ml.render(new StringReader(inputHTML), baos);
    baos.close();
    File output = new File(outputPDFFile);
    FileOutputStream fos = new FileOutputStream(output);
    fos.write(baos.toByteArray());
    fos.close();
    [/code]

    打赏 评论
  • EnhengQ 2016-09-12 10:15

    楼主用插件试试吧,PageOffice插件可以很简单方便的实现生成word文档,很容易实现在线预览office文件的,也可以实现将word转换成pdf和html,并且可以在线预览

    打赏 评论

相关推荐 更多相似问题