2015-09-04 35 views
7

Illustrator使用PDF和AICB作为剪贴板。 我有兴趣将剪贴板从java内部填充为PDF,然后将其粘贴到Illustrator中。从java插画获取剪贴板内容

我认为这可能更容易先尝试其他方式。所以从illustrator复制到java。

如果我在Illustrator中复制了一些圆圈,则Clipboard中的方法getTransferDataFlavors不会返回任何DataFlavors。 和所有isDataFlavorSupported我得到一个错误。

import java.awt.datatransfer.*; 
import java.awt.Toolkit; 

public class ClipBoardTest { 


    public static void main(String[] args) { 

     Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 

     Transferable content = clipboard.getContents(null); 
     if (content != null) { 

      DataFlavor[] dataFlavors = content.getTransferDataFlavors(); 

      for (DataFlavor df : dataFlavors) { 
       System.out.println(df.getHumanPresentableName()); 
       System.out.println("---"); 
      } 


      System.out.println(content.isDataFlavorSupported(DataFlavor.stringFlavor)); 
      System.out.println(content.isDataFlavorSupported(DataFlavor.imageFlavor)); 
      System.out.println(content.isDataFlavorSupported(DataFlavor.allHtmlFlavor)); 
      System.out.println(content.isDataFlavorSupported(DataFlavor.fragmentHtmlFlavor)); 
      System.out.println(content.isDataFlavorSupported(DataFlavor.selectionHtmlFlavor)); 
      System.out.println(content.isDataFlavorSupported(DataFlavor.javaFileListFlavor)); 


      DataFlavor myDF = new DataFlavor("application/pdf", "PDF"); 
      System.out.println(content.isDataFlavorSupported(myDF)); 

     } 

    } 

} 

输出:

false 
false 
false 
false 
false 
false 
false 

我一无所知的下一步该怎么做。我在过去的几个小时里一直在尝试一些事情,但它似乎并没有引导任何地方。我能做什么?

回答

1

您从剪贴板获得的Transferable已包含所有剪贴板内容。只是你不能将它转换成任何入伍的数据风格。如果按照原样将其复制回剪贴板,则应该在生成该应用程序的应用程序中进行制作。

对于其他方式,您可以尝试使自定义Transferable具有可由目标应用程序解释的内容和结构。然后把它放到剪贴板上,以便粘贴。