来自jsp的Docx(或d​​oc)生成

时间:2015-01-08 09:08:01

标签: java jsp apache-poi docx docx4j

首先,对不起,如果我的英语不是很好:s

我寻找一个生成jsp页面的word版本的解决方案。我测试了很多解决方案,但似乎都没有正常工作。给我更好结果的人是使用MIME for Word:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
<%@ page language="java" contentType="application/msword; charset=UTF-8" %>

但是此解决方案仅适用于IE并强制在Word中打开页面。但在其他浏览器(chrome或firefox)下,它会在.jsp

中下载我的页面代码

另一个解决方案是使用POI,这是一个我没有成功设置的Java API。

提前致谢,

威廉

2 个答案:

答案 0 :(得分:1)

由于您考虑使用POI,我建议您使用docx4j,请按此link进行设置。

用于导入docx4j库下载最新的docx4j.jar并添加项目构建路径或对maven项目使用以下依赖项

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>3.2.0</version>
</dependency>

使用此代码将您的jsp转换为pdf

InputStream is = new FileInputStream(new File("your jsp file"));
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is);
PdfSettings pdfSettings = new PdfSettings();
OutputStream out = new FileOutputStream(new File("your pdf file"));
PdfConversion converter = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage);
converter.output(out, pdfSettings);

希望这能解决你的问题。

答案 1 :(得分:0)

你混淆了.doc和 transfert 。 Naresh kumar建议的Apache POI或docx4j用于在服务器上生成.doc或.docx文件。 contentType="application/msword; charset=UTF-8"用于转移:它只是向客户声明后面的内容应该是msword文档。

生成jsp页面的单词版本很难理解:jsp允许在文本文档中包含动态元素,通常是HTML页面,但它可以是简单的txt或XML。但是.doc或.docx是二进制格式,必须使用适当的工具直接通过servlet生成。

您还可以查看RTF格式。 (是?)是msword文档的文本表示。由于它是一种文本格式,因此可以使用JSP页面在RTF页面中包含动态元素,然后声明contentType="application/rtf; charset=UTF-8"是有意义的。

根据wikipedia上的页面,RTF的最新版本于2008年由microsoft发布,因此您也可以尝试使用Open Document FormatOffice Open XML。两种格式都允许通过XML生成文档,但要注意最终文档是包含其他xml文件的zip文件,因此它仍然是二进制格式。