Veröffentlicht 18. Oktober 201113 j Guten Morgen liebe Leute, jetzt bin ich schon am verzweifeln und bevor ich mein grandioses Englisch im Adobe-Forum nutze, versuche ich es erst mal hier. Ich programmiere in Visual Studios 2008 in C++ ein Pugin für den Adobe Illustrator. Ziel des Plugins ist es, automatisch wenn ein MenuItem von mir geklickt wird, die einzelnen Zeichnungen (Artboards) als png zu exportieren. Das MenuItem habe ich ohne Probleme implementieren können. Die IllustratorSDK hilf da ja auch sehr. Nur mit dem exportieren haperts. Ich nutze hierzu den ActionManager->PlayActionEvent() und generiere mir vorher die Parameter: AIActionParamValueRef myParams = nil; error = sAIActionManager->AINewActionParamValue(&myParams); if(myParams){ error = sAIActionManager->AIActionSetStringUS(myParams, kAIExportDocumentNameKey, ai::UnicodeString("C:\test.png") ); error = sAIActionManager->AIActionSetString(myParams, kAIExportDocumentFormatKey, "Adobe PNG Format"); error = sAIActionManager->AIActionSetString(myParams, kAIExportDocumentExtensionKey, "png"); error = sAIActionManager->AIActionSetBoolean(myParams, kAIExportDocumentSaveAllKey, true); error = sAIActionManager->AIActionSetBoolean(myParams, kAIExportDocumentSaveMultipleArtboardsKey, true); error = sAIActionManager->AIActionSetString(myParams, kAIExportDocumentSaveRangeKey, "5"); error = sAIActionManager->RecordActionEvent(kAIExportDocumentAction, kDialogOff, myParams); if (sAIActionManager->InRecordMode){ sAIActionManager->PlayActionEvent(kAIExportDocumentAction, kDialogOff, myParams); } } Das Problem ist, dass sich immer der Dialog zum exportieren öffnet, obwohl ich "kDialogOff" ausgewählt habe und noch nicht einmal die Zeichnungen im unteren Bereich aktiv sind, obwohl ich den Parameter: kAIExportDocumentSaveMultipleArtboardKey auf true gesetzt habe. Der Dialog wird aber für PNG geöffnet. (Screenshot siehe Anhang) Ich hoffe jemand kann mir da weiterhelfen, denn die Lösungen in Google funktionieren leider nicht, die habe ich alle schon ausprobiert. Grüße Genodi
18. Oktober 201113 j Erste Grundregel der Fehlersuche: Rückgabewerte prüfen. Prüfen heißt nicht, in einer Variablen ablegen und dann ignorieren. Das \t in deinem Dateinamen-Literal wird übrigens als Tab interpretiert. Wenn da ein Backslash stehen soll, musst du im Literal zwei \ machen.
18. Oktober 201113 j Autor Erste Grundregel der Fehlersuche: Rückgabewerte prüfen. Prüfen heißt nicht, in einer Variablen ablegen und dann ignorieren. Die Variable error ist immer 0 also kein Fehler, dies habe ich mit dem Debugger geprüft. Das \t in deinem Dateinamen-Literal wird übrigens als Tab interpretiert. Wenn da ein Backslash stehen soll, musst du im Literal zwei \ machen. Wenn ich das mache erhalten ich einen Fehler mit folgendem Text: Der Vorgang kann nicht vollständig ausgeführt werden, weil ein unbekannter Fehler aufgetreten ist. [DFER] siehe Screenshot in anhang
18. Oktober 201113 j Kannst du denn mit denselben Einstellungen manuell speichern? Hast du insbesondere Schreibzugriff auf C:\?
18. Oktober 201113 j Autor Oh mann, was für ein Anfängerfehler, da muss ich mal mit unseren Admins schimpfen, was die mir für eine VM abgelegt haben *Schuldwegschieb* Danke Klotzkopp, wenn noch was ist, dann würde ich mich nochmal melden!
18. Oktober 201113 j Autor So jetzt kommt das nächste Problem: Es funktioniert im Grunde, aber scheinbar reichen dir Parameter nicht. Laut Hilfe von Adobe sind das alle Params für die kAIExportDocumentAction. Wenn der dann versucht zu schreiben, dann wird eine *.tmp$$ Datei mit 0 Bytes geschrieben und es kommt ein Fehler "ID=-108", dass nicht genug Speicher da ist. Meine VM hat 4 GB und es sind noch locker 2 GB RAM frei. Wenn der Exportvorgang startet, dann geht im TaskManager die RAM-Nutzung auch 3,5 GB hoch also über 1 GB mehr RAM für den Illustrator. Das kann doch nicht sein oder? Weiß jemand noch etwas hierzu zu ergänzen? EDIT: Der export dauert auch ziemlich lange! Bearbeitet 18. Oktober 201113 j von Genodi Ergänzung
18. Oktober 201113 j Autor Ja manuell geht es, da kommt ein Dialog mit dem ich die Auflösung etc. einstellen kann, da habe ich das Gefühl, dass ich das als Parameter angeben muss, ich weiß aber nicht wie die Parameternamen sind (meistens char[4]) die ich dann bestücken kann, das ist auch nicht bei Adobe dokumentiert.
18. Oktober 201113 j Autor Ja da bin ich schon länger dran, aber bisher ohne Erfolg, ich darum führe ich parallel hier noch ein Thema, um schneller an eine Lösung zu kommen. Dort wird das Bild vorher angepasst, damit es exportiert werden kann. In der letzten Lösung wird das gesat Dokument zum PNG exportiert, das ist aber nicht mein Ziel, ich möchte jedes Artboard exportieren können. Wenn ich das mit der normalen Exportieren-Funktion mache, dann gibt es keine Probleme, ich versuche es gerade mit dem ai_plugin_rasterize. Ich weiß aber nicht ob das die Lösung ist, die ich möchte, weil das Dokument selbst "nicht" verändert werden darf.
18. Oktober 201113 j Autor Also ich habe es weiter probiert und leider greifen die Lösungen aus dem Foren-Eintrag von Adobe nicht
18. Oktober 201113 j Autor Ich habe die AIImageOptPNG... wie es im o.g. Link steht, ich weiß aber leider nicht, wie ich diese Parameter in die ActionEvent einbinde, weiß das jemand?
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.