这是一些代码片段,可以让您了解到目前为止我所获得的内容。我可以通过这种方式输出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();
答案 0 :(得分:0)
另一种合适的方法是在服务器上完全生成文档(已嵌入图像)并将其流式传输给请求者,而不是尝试让文档进行单独的https提取吗?如果是这样,Docmosis和JODReports可以使用图片以doc格式为您生成文档。