You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从系统剪贴板获取EMF图像作为InputStream?

问题:从剪贴板获取EMF流转换PNG时触发UnsupportedFlavorException

场景背景

  • 在ChemDraw(一款类似Inkscape的分子结构矢量图形编辑器)中复制图像后,系统剪贴板会存入EMF格式图像,通过Inside Clipboard工具可查看CF_ENHMETAFILE和CF_METAFILEPICT两个条目。
  • 需要将剪贴板中的EMF图像以InputStream形式读取,再通过FreeHEP库转换为PNG格式(FreeHEP支持从文件或InputStream加载EMF)。

尝试的代码实现

String clipboardName = "CF_METAFILEPICT";
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
SystemFlavorMap flavorMap = (SystemFlavorMap) SystemFlavorMap.getDefaultFlavorMap();
DataFlavor myDataFlavor = new DataFlavor(java.io.InputStream.class, "");
flavorMap.addFlavorForUnencodedNative(clipboardName , myDataFlavor);
InputStream data = (InputStream) clipboard.getData(myDataFlavor);

出现的异常

执行最后一行代码时抛出异常:
java.awt.datatransfer.UnsupportedFlavorException: application/x-java-serialized-object
且该代码逻辑对其他类型的剪贴板对象有效。

内容的提问来源于stack exchange,提问作者Senti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 00:39:52