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

cla*_*l3r 7 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));

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

false
false
false
false
false
false
false
Run Code Online (Sandbox Code Playgroud)

我对下一步做什么一无所知.我在过去的几个小时里一直在努力,但似乎并没有带来任何好处.我能做什么?

Dra*_*vic 1

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

相反,您可以尝试使您的自定义Transferable具有可由目标应用程序解释的内容和结构。然后只需将其放入剪贴板即可粘贴。