使用java从illustrator获取剪贴板内容

时间:2015-09-04 14:06:49

标签: java clipboard adobe-illustrator

Illustrator使用PDF和AICB作为剪贴板。 我有兴趣将java中的剪贴板填充为PDF,然后将其粘贴到Illustrator中。

我认为首先尝试其他方式可能更容易。所以从插画家复制到java。

如果我在Illustrator中复制了一些圈子,则getTransferDataFlavors中的方法Clipboard不会返回任何DataFlavor。 对于所有人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 个答案:

答案 0 :(得分:1)

您从剪贴板获取的Transferable已包含所有剪贴板内容。只是你不能将它转换为任何登记的数据风格。如果你按原样将它复制回剪贴板,那么它应该可以在生成它的应用程序中使用。

反过来说,您可以尝试使自定义Transferable具有目标应用程序可以解释的内容和结构。然后将其放入剪贴板以便粘贴它。