如何从系统剪贴板获取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
相关产品推荐
相关产品推荐

