我有一个网络应用程序。我在服务器端生成了 xml 格式的 MS Word 文档(Word 2003 XML 文档)。我需要使用某种查看器向客户端的用户显示此文档。所以,问题是:我可以使用哪些库来解决这个问题?我需要一个 API 来使用 java在客户端查看 word 文档。
4 回答
您无法使用 Java(或任何其他简单技术)在网页中可靠地显示 Word 文档。有几个商业库可以渲染 Word,但您不会发现这些是简单、便宜或可靠的解决方案。
你应该做的是:
(1) 使用 .NET 程序在服务器上打开 Word 引擎 (2) 使用 Word 引擎将文档转换为富文本 (3) 使用 RTF Swing 小部件显示富文本,或转换为 HTML:
String rtf = [your document rich text];
BufferedReader input = new BufferedReader(new StringReader(rtf));
RTFEditorKit rtfKit = new RTFEditorKit();
StyledDocument doc = (StyledDocument) rtfKit.createDefaultDocument();
rtfEdtrKt.read( input, doc, 0 );
input.close();
HTMLEditorKit htmlKit = new HTMLEditorKit();
StringWriter output = new StringWriter();
htmlKit.write( output, doc, 0, doc.getLength());
String html = output.toString();
这种方法的主要风险是 Word 引擎将崩溃或发生内存泄漏。出于这个原因,您必须有一种机制来定期重新启动它并对其进行测试以确保它可以正常工作并且不会占用内存。
docx4all 是一个基于 Swing 的小程序,它执行我们几年前编写的 Word 2007 XML(即不是 Word 2003 XML)。
从svn获取它。
这是一种可能的编辑方法。如果您想要的只是一个查看器,它不会转换为 HTML 或 PDF?您可以为此使用 docx4j。(披露:“我的”项目)。
您可能会查看Apache POI - Java API to Handle Microsoft Word Files,它能够读取各种 Word 文档(OLE2 和 OOXML 格式,分别为 .doc 和 .docx 扩展名)。
读取 doc 文件可以很简单:
import java.io.*;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class ReadDocFile {
public static void main(String[] args) {
File file = null;
WordExtractor extractor = null ;
try {
file = new File("c:\\New.doc");
FileInputStream fis=new FileInputStream(file.getAbsolutePath());
HWPFDocument document=new HWPFDocument(fis);
extractor = new WordExtractor(document);
String [] fileData = extractor.getParagraphText();
for(int i=0;i<fileData.length;i++){
if(fileData[i] != null)
System.out.println(fileData[i]);
}
}
catch(Exception exep){}
}
}
您可以在以下位置找到更多信息:HWPF 快速指南(特别是HWPF 单元测试)
请注意,根据 POI 网站:
HWPF 仍处于早期开发阶段。
我建议查看 openoffice 源代码并实现它。它应该是用java编写的。