2015-01-08 60 views
1

首先,對不起,如果我的英語不是很好:■DOCX(或DOC)代

我尋找一個解決方案來生成一個jsp頁面的Word版本。我測試了很多解決方案,但似乎都沒有正常工作。誰給了我更好的結果之一是使用Word中的MIME:

<!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。

由於提前,

威廉

回答

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); 

希望這能解決你的問題。

+0

我已經嘗試使用docx4j,但我沒有成功設置它:( – WilliamN

+0

我試圖。我將.jar放在WEB-INF/lib中,但我想我必須導入lib從我的jsp? – WilliamN

+0

你正在做的是從一個jsp生成一個PDF應該是docx格式。我真的懷疑這是OP想要什麼,即使docx4j確實是一個很好的工具來生成一個docx文檔。 –

0

你很困惑的.doc和transfert。 Naresh kumar建議的Apache POI或docx4j用於在服務器上生成.doc或.docx文件。 contentType="application/msword; charset=UTF-8"用於轉移:它只是向客戶聲明後面應該是一個msword文檔。

生成jsp頁面的單詞版本很難理解:jsp允許在文本文檔(通常是HTML頁面)中包含動態元素,但它可以是純文本或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文件,因此它仍然是二進制格式。

+0

我建議這種方法只是因爲@WilliamN使用POI。 –

+0

事實上,由於我可以保存和修改它,因此創建文檔的方式並不重要。最簡單的方法將是最好的:)我將看看RTF和Open XML格式 – WilliamN

+0

@WilliamN:恕我直言,你應該首先通過docx4j或Apache POI在servlet中生成並保存一個docx文件服務器端,然後輸出它直接來自servlet。不需要JSP。 –