我的Java应用程序使用DocX4J生成DOCX格式的文档。我需要将它发送到剪贴板中以粘贴到Word中。我知道Word将使用HTML,但我宁愿不将DOCX转换为HTML(我不确定DocX4J是否支持它,而且我不会丢失任何格式)。我可以使用什么样的剪贴板格式(用Java术语DataFlavor)将DOCX数据发送到剪贴板,以便Word能够理解它?
我正在使用OpenOffice文档做类似的事情,为此我使用
DataFlavor odtFlavor = new DataFlavor("application/x-openoffice-embed-source-xml;"+
"representationclass=java.io.InputStream");
我应该如何代表DOCX文件?在OpenOffice ODT的情况下,我传递从ODT文件创建的InputStream。
我相信David Thielen在这里提出了类似的问题:What are the clipboard formats for Microsoft Office where you can drop a chart?但是没有答案。
答案 0 :(得分:2)
最糟糕的情况是,docx4j可以导出为HTML,因此您可以这样做。
或者您可以使用RTF。 docx4j使用FOP创建PDF,因此您可以使用 用于创建RTF的XSL FO输出(FOP可以做到这一点 - 你的里程可能 有所不同)。
不确定哪一项能为您提供更好的品质。可能是 HTML(虽然图像会发生什么?)。
或者您可以将基本docx转换为RTF转换器。
可能有一种方法可以使用docx格式。
如果您从Word复制,并在ClipSpy中查看它(二进制可用于 从CodeProject下载源码,你会看到“嵌入源”是 OLE中的数据作为docx。
how to reload saved "Embed Source" clipboard data? 说你可以通过传递自己的“嵌入源” Clipboard.SetData一个流对象
似乎依赖于您是要复制/粘贴还是拖放。 进一步查看您的链接What are the clipboard formats for Microsoft Office where you can drop a chart?和 http://social.msdn.microsoft.com/Forums/en/worddev/thread/84263fb9-61c2-424a-a294-a12f69fd6b1b