2015-09-04 32 views
7

Program Illustrator używa do zapisywania plików PDF i AICB. Jestem zainteresowany wypełnianiem schowka z poziomu java jako pliku PDF, aby móc go wkleić w programie Illustrator.Pobieranie zawartości schowka z programu illustrator za pomocą java

Pomyślałem, że łatwiej będzie najpierw spróbować w inny sposób. Skopiuj z programu Illustrator do języka Java.

Jeśli skopiuj niektóre kręgi w programie Illustrator, to metoda getTransferDataFlavors z Clipboard nie zwraca żadnych znaków DataFlavors. I dla wszystkich isDataFlavorSupported otrzymuję fałszywe.

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)); 

     } 

    } 

} 

wyjściowa:

false 
false 
false 
false 
false 
false 
false 

Jestem pojęcia, co robić dalej. Próbowałem rzeczy przez ostatnie kilka godzin, ale nigdzie ich to nie prowadzi. Co mógłbym zrobić?

Odpowiedz

1

Otrzymany ze schowka obiekt zawiera już całą zawartość schowka. Po prostu nie można go przekonwertować na żaden z zarejestrowanych smaków danych. Jeśli skopiujesz go z powrotem do schowka tak, jak jest, to powinno być możliwe do wklejenia w aplikacji, która go utworzyła.

W odwrotnym kierunku można spróbować dostosować swój niestandardowy kod Transferable do zawartości i struktury, które mogą być interpretowane przez aplikację docelową. Następnie po prostu umieść go w schowku, aby można go było wkleić.