DOCX数据的剪贴板格式

时间:2011-09-02 10:05:11

标签: java drag-and-drop ms-word clipboard copy-paste

我的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?但是没有答案。

1 个答案:

答案 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