2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren

inflamer

Bekanntes Mitglied
Hallo Forum,

ein etwas spezielles Thema, allerdings sind wir hier doch alle mehr oder weniger multidisziplinär unterwegs ;-) Drum hoffe ich, dass jemand von euch sich mit dem AI näher auskennt.

Ich schreibe Vektor-Daten als PDF- oder EPS-Datei, und zwar exakt so wie sie sonst in eine PDF-/EPS-Datei auf die Festplatte geschrieben würden, in die Zwischenablage, von wo aus der Illustrator sich diese Daten holen soll:

Java:
  private final static DataFlavor PDF_FLAVOR = new DataFlavor("application/pdf", null);
  private final static DataFlavor EPS_FLAVOR = new DataFlavor("application/postscript", null);
  static {
    SystemFlavorMap systemFlavorMap = (SystemFlavorMap)SystemFlavorMap.getDefaultFlavorMap();
    systemFlavorMap.addUnencodedNativeForFlavor(PDF_FLAVOR, "application/pdf");
    systemFlavorMap.addUnencodedNativeForFlavor(EPS_FLAVOR, "application/postscript");
  }


  private void copy(int format) {
    DataFlavor dataFlavor;
    if      (format == FORMAT_PDF)    dataFlavor = PDF_FLAVOR;
    else /* (format == FORMAT_EPS) */ dataFlavor = EPS_FLAVOR;

    byte[] imgBuf = makeImageBuffer(format); // erstelle pdf-/eps-datei

    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new Transferable() {
      public DataFlavor[] getTransferDataFlavors() {
        return new DataFlavor[] { dataFlavor };
      }
      public boolean isDataFlavorSupported(DataFlavor f) {
        return dataFlavor.equals(f);
      }
      public Object getTransferData(DataFlavor f) throws UnsupportedFlavorException, IOException {
        return new ByteArrayInputStream(imgBuf);
      }
    }, null);
  }

Der Nachteil dieser Methode ist - sie funktioniert nicht. 😛 Das heisst sie funktioniert mit z.B. Inkscape, aber nicht mit dem AI. Der "Einfügen"-Eintrag im "Bearbeiten"-Menü bleibt grau, was wohl bedeutet, dass der AI meint, keine "verwertbaren" Daten in der Zwischenablage vorzufinden.

Ich habe auch schon diverse Grafiktools ausprobiert, welche eine Funktion zum Kopieren von Vektordaten in die ZA mitbringen, mitunter als WMF - NICHTS davon funktioniert zusammen mit dem Illustrator!

Weiß jemand Näheres zu diesem Problem? Vielen Dank im voraus! (Schon eine Million Anläufe unternommen.)
 
Zuletzt bearbeitet:
Kannst Du mit dem Illustrator die andere Richtung gehen? Sprich: Da etwas in die Zwischenablage nehmen? Dann könntest Du die Zwischenablage analysieren um zu sehen, was dort erwartet wird.

Wenn man weiss, was die Applikation erwartet, dann könnte man ggf. die Zwischenablage anpassen. Aber wie gesagt: Dazu müsste man genau wissen, was da erwartet wird.

Die Anwendung selbst kenne ich nicht, daher kann ich leider nicht mehr beitragen als diese fixe Idee.
 
Hallo Konrad,

auf die Idee war ich (bei meinen Tausend Anläufen) auch schon gekommen. Ergebnis war (wie zu erwarten) zig verschiedene Flavors, aber alles proprietäres Zeug, darunter ein dem Anschein nach propriäteres SVG... etc.

Wenn es denn nicht einfacher geht, dann werde ich das wohl oder übel darüber machen müssen. Ich hatte nur gehofft, das ginge einfacher. Schließlich sollte der Illustrator doch Daten von "außen" annehmen können und das dann in einer halbwegs standardisierten Form...
 
Zuletzt bearbeitet:
Wenn ich so eine PDF oder EPS (erzeugt aus meiner Anwendung heraus) statt über die ZA als Datei per Drag&Drop in den AI ziehe, übernimmt er die schließlich ohne Weiteres. Warum nicht über die ZA, ist mir daher ein Rätsel...
 
Der Grund ist eigentlich ganz einfach.
Wenn du eine Datei (oder mehrere) dragst, dann wir eine Liste von Strings (Dateipfade) übergeben, mehr nicht. Das Programm liest dann die Datei mit der eignene Logik neu ein.

Wenn du aber die fertigen Elemente übertragen willst, welche das Programm intern verwendet, dann musst du eben mit dieser komplexen Struktur arbeiten, die du oben beschrieben hast.
 
Zuletzt bearbeitet:
Der Grund ist eigentlich ganz einfach.
Wenn du eine Datei (oder mehrere) dragst, dann wir eine Liste von Strings übergeben, mehr nicht. Das Programm liest dann die Datei mit der eignene Logik neu ein.
Das ist mir schon klar, der Punkt ist doch aber, dass der Illustrator die Dateien NIMMT, sprich: er hat weder am Format etwas zu meckern noch sind die Dateien irgendwie korrupt. Wenn er die also nimmt, warum dann nicht auch über die Zwischenablage - ist ja 1:1 derselbe Inhalt.

Der AI ist in dieser Hinsicht aber nicht der Einzige, auch CorelDRAW (unterstützt PDF und SVG) nimmt nichts über die ZA an, sehr wohl aber ebenfalls über DnD.

Da muss wohl irgendeine verborgene Logik dahinterstecken...

Und: der obige Code funktioniert ja gerade nicht, dass ist ja der eigentlich Grund des Topics... 😉
 
Was du auch mal schauen kannst:
Kannst du die Datei im Windows Explorer in die Zwischenablage nehmen um diese dann einzufügen?

Falls das geht, dann kannst Du Dir ansehen, wie das in der Zwischenablage aussieht. Das wäre dann ggf. einfacher nachzubauen.
 
Was du auch mal schauen kannst:
Kannst du die Datei im Windows Explorer in die Zwischenablage nehmen um diese dann einzufügen?

Falls das geht, dann kannst Du Dir ansehen, wie das in der Zwischenablage aussieht. Das wäre dann ggf. einfacher nachzubauen.
Genao SO funktioniert's!

Du meine Güte, ich wäre nie drauf gekommen, obwohl's so simpel ist. Ganz herzlichen Dank! 👍

Dass du um diese frühe Uhrzeit schon derart um's Eck denken kannst... 😃
 

Zurück
Oben