Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

post-81339-14430449138545_thumb.png

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.

  • 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

post-81339-14430449139273_thumb.png

  • 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!

  • 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 von Genodi
Ergänzung

  • 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.

  • 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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.