2009-04-09 11 views
3

Ich möchte ein VB-Programm in ExtendScript umwandeln, um einige Zeichnungen in Adobe Illustrator CS4 zu automatisieren, muss aber aus einer Datenbank lesen. Kann ich mit ExtendScript von einer Datenbank lesen? Wie?Datenbankverwendung mit ExtendScript (für Adobe Illustrator)

+0

Müssen Sie den VB-Code wirklich in ExtendScript konvertieren? Wenn dies keine feste Anforderung ist, ist es am einfachsten, die Adobe Illustrator CS4 COM-API zu verwenden, die in etwa der API von ExtendScript entspricht. Bei diesem Ansatz führen Sie die gesamte Zeichnung über die COM-API und nicht über die ExtendScript-API-Befehlsäquivalente aus. Sie können VB/VBScript beibehalten und behalten somit weiterhin die Fähigkeit, mit der Datenbank von VB zu arbeiten. Beachten Sie, dass Adobe den (API-) Skript-Verweis aus irgendeinem Grund als "VBScript" statt "COM" bezeichnet. – David

Antwort

1

Mein Verständnis ist, dass Sie ExtendScript zu 'doScript()' mit Ihrem VB-Code verwenden müssen. ExtendScript hat keine eigene Datenbankverbindung. Aber ich bin mit Leuten vertraut, die VB-Code haben, um sich mit Datenbanken zu verbinden und Ergebnisse zurückzugeben. ExtendScript verfügt über diese doScript-Methode, um den VB-Code auszuführen. Der Trick besteht darin, einen Weg zu finden, die Daten zurück zu ExtendScript zu bringen, um den Adobe-Anwendungen mitzuteilen, was zu tun ist. .doScript hat meines Wissens keine gute Möglichkeit, die Ergebnisse des eingebetteten Codes zu akzeptieren. Also, was ich Leute gehört habe, ist einer von mehreren Dingen:

  • Lassen Sie den VB-Code eine Textdatei schreiben, die der ExtendScript-Code lesen und analysieren kann.
  • Lassen Sie den VB-Code ein 'ScriptLabel' zu Ihrem Adobe Illustrator-Dokument hinzufügen. Verwenden Sie dann ExtendScript, um das gleiche Label zu lesen. Das ist wirklich das Gleiche wie das Schreiben einer Textdatei, aber es gibt einfach keine Datei.

HTH

Jon S. Winter, ExtendScript Unterstützung, elektronische Publizieren Unterstützung

+0

Ich bin etwas verwirrt über diese Option, obwohl ich es früher übersehen habe. Welche Skript-Engine für Adobe/ExtendScript ist das? Ich bemerke, dass ich Illustrator CS6 Scripting-Referenzdokumente anschaue, dass DoScript für VBScript und Applescript verfügbar ist und dass für VBScript doJavascript (zum Ausführen von ExtendScript-Code) vorhanden ist. ExtendScript, bei dem es sich normalerweise um Javascript handelt (für Adobe-Anwendungen), hat doScript() in den Dokumenten nicht erwähnt. Welcher Dokument erwähnt das? Oder meintest du etwas anderes zu klären? – David

2

Illustrator Scripting-Engine keinen Mechanismus zur Verfügung gestellt wird direkt externe Daten zu lesen, aber Sie haben mehr Möglichkeiten, zu tun diese ...

  1. ein externes Programm schreiben, die Datenbank verbinden VB-Skript zu generieren, und verwenden Sie Illustrator das ‚erzeugt‘ scrip exec t, das ist die alte Art, die ich getan habe.
  2. Das neue ScriptUI seit cs3 bietet ein Fenster zu öffnen, das ein Flash-SWF als Schnittstelle zur Steuerung der Illustrator JS-Engine enthält. Sie können XML lesen, Webservices aufrufen, Flash Remoting in Flash-Inhalten. Ich bin mir nicht sicher, ob Sie mit diesen Toolsets vertraut sind.
+0

Haben Sie weitere Informationen oder Links zu Ihrer zweiten Methode? –

+0

ja es ist, können Sie HTTP-Anfrage http://old.code.zhdk.ch/projects/CERNrepository/browser/eBulletin/Submission/InDesignJS/HttpLibrary.jsx tun oder Sie können eine Datei lokal als CSV – Lukasz

+0

ich wollte nur lesen um darauf hinzuweisen, dass wir mit der Scripting Engine die native ExtendScript-Engine für Adobe-Apps meinen. Weil alle Adobe-Anwendungen (unter Windows) auch eine COM-API/Engine bereitstellen, die von VBScript und anderen COM-kompatiblen Sprachen verwendet werden kann. Obwohl wir nicht wissen, ob das OP speziell ExtendScript nur Option benötigt. – David

2

Ich habe ein bisschen eine andere Lösung habe ich erfolgreich mit: eine Webservice erstellen, den Zugriff auf Ihre DB hat und dann von ExtendScript verwendet http-Verbindung die Dienste zu verbrauchen (und von dort auf Sie können ziemlich tun viel was auch immer du möchtest).

3

ja, ES kann CSVs lesen. formatieren Sie einfach Ihre Datenbank mit Komma-Abgrenzung.

hier ist eine Funktion, die den Trick tun sollten:

function readPref (thePath) { 
    if (File(thePath).exists == true) { 

    var file = File(thePath); 
    file.open("r"); 
    file.encoding= 'BINARY'; 
    var theText = file.read(); 
    file.close(); 
    return String(theText).split(",") 

    } 
}; 

sollte ein Array zurück mit dem, was Sie brauchen. Lassen Sie VB eine Datenbank exportieren und benutzen Sie diese, um sie zu lesen. Donezo.

+0

Bitte beachten Sie die Abstimmung oder akzeptieren Sie diese Antwort, wenn diese Antwort ausreichend ist. – Lukasz

+0

FYI, das kann auch hilfreich sein, CSV in ExtendScript zu lesen: https://github.com/fabiantheblind/extendscript.csv – David

0

Ob Sie VB müssen Refactoring 100% ExtendScript (kein VB-Code, alle ExtendScript), würde ich sagen, die einfachste Lösung, so etwas wie dieses:

Haben Sie ein VB/VBScript-Wrapper, der ExtendScript aufruft, und dieser Wrapper behandelt die Datenbankinteraktion und übergibt die Daten an ExtendScript zurück &. Dies ermöglicht es Ihnen, den Datenbankcode einfach zu behalten, was Sie in VB haben, und das ExtendScript einfach zu halten.Sie können ExtendScript von VB/VBScript aus aufrufen, indem Sie die COM-API der Adobe-Anwendung verwenden, die über alle Methoden zum Zeichnen verfügt, die Sie von ExtendScript plus der Methode doJavascript() zur Ausführung von JavaScript-Code (oder realistischer ExtendScript) erhalten. Dieselbe doJavascript() -Methode kann verwendet werden, um ExtendScript-JSX-Dateien anstelle von einem Ausschnitt aus Javscript-Code einzuziehen. Sie können weitere Informationen in einem verwandten SO Beitrag finden:

Is it possible to execute JSX scripts from outside ExtendScript?

Blick auf die Antworten, die Windows-spezifisch sind. Nimmt man diese Frage & Lösung weiter kann es auch für andere Plattformen (Mac, Python, Perl, etc.) funktioniert es muss nicht für VB und Windows sein, der gleiche Ansatz kann verwendet werden, um ExtendScript extern über COM zu interagieren Windows oder AppleScript auf dem Mac, und das wird mit jeder Sprache funktionieren, die COM/Applescript-kompatibel (oder Schnittstelle) ist.

Verwandte Themen