在JAVA中通过SSL生成带有嵌入其中的图像的Word文档

时间:2010-03-01 16:22:16

标签: java ssl ms-word doc

这是一些代码片段,可以让您了解到目前为止我所获得的内容。我可以通过这种方式输出Word文档。我也可以通过浏览器中的URL访问图像,但Word文档src似乎没有访问servlet(根据我的一些日志)。

ExportServlet.java `

    response.setContentType("application/ms-word");

    String imageUrl = request.getScheme() + "://" + request.getServerName() +
                      ":" + request.getServerPort() + request.getContextPath() +
                      "/ExportImage";

    PrintWriter out = response.getWriter();

        out.println("<html xmlns:o='urn:schemas-microsoft-com:office:office'
    xmlns:w='urn:schemas-microsoft-com:office:word'
    xmlns:v='urn:schemas-microsoft-com:vml'
    xmlns='http://www.w3.org/TR/REC-html40'>
    <head>
            <title>Exported Documents</title>

            <!--[if gte mso 9]>
           <xml>
           <w:WordDocument>
           <w:View>Print</w:View>
           <w:Zoom>100</w:Zoom>
           <w:DoNotOptimizeForBrowser/>
           <w:BreakWrappedTables/>
           </w:WordDocument>
           </xml>
           <![endif]-->
    </head>
    <body>
    <img src=\"" + imageUrl + "\">
    </body>
</html>")
    out.flush();

`

ExportImage.java

      Logger.log("getting Image");
      ServletContext servletContext = getServletContext();
        String filename = servletContext.getRealPath("myImage.gif");
        response.setContentType(
                servletContext.getMimeType(filename));
        File file = new File(filename);
        response.setContentLength((int)file.length());

        FileInputStream in = new FileInputStream(file);
        OutputStream out = response.getOutputStream();

        // Copy the contents of the file to the output stream
        byte[] buf = new byte[1024];
        int count = 0;
        while ((count = in.read(buf)) >= 0) {
            out.write(buf, 0, count);
        }
        in.close();
        out.flush();
        out.close();

1 个答案:

答案 0 :(得分:0)

另一种合适的方法是在服务器上完全生成文档(已嵌入图像)并将其流式传输给请求者,而不是尝试让文档进行单独的https提取吗?如果是这样,DocmosisJODReports可以使用图片以doc格式为您生成文档。