2009-04-09 12 views
3

Я хочу рефакторинга VB программу в ExtendScript автоматизировать некоторые рисования в Adobe Illustrator CS4, но есть требование для чтения из базы данных. Можно ли читать из базы данных с помощью ExtendScript? Как?базы данных с ExtendScript (для Adobe Illustrator)

+0

Вам действительно нужно преобразовать код VB в ExtendScript? Если это не является фиксированным требованием, самая простая альтернатива - фактически использовать Adobe Illustrator CS4 COM API, который является примерно таким же API, который доступен для ExtendScript. Используя этот подход, вы делаете весь чертеж через COM API, а не с эквивалентами команд ExtendScript API, и можете придерживаться VB/VBScript и тем самым сохранять способность работать с базой данных из VB. Обратите внимание, что по какой-либо причине Adobe помещает ссылку на сценарий (API) для сценариев «VBScript», а не «COM». – David

ответ

1

Я понимаю, что вам нужно будет использовать ExtendScript к «doScript()» с кодом VB. У ExtendScript нет никакого собственного подключения к базе данных. Но я знаком с людьми, у которых есть код VB для подключения к базам данных и возврата результатов. ExtendScript имеет этот метод doScript для запуска кода VB. Трюк, это швы, заключается в том, чтобы найти способ вернуть данные в ExtendScript, чтобы сообщить приложениям Adobe, что делать. .doScript, по-моему, не имеет приятного способа принять результаты встроенного кода. Итак, то, что я слышал, это одна из нескольких вещей:

  • Имейте код VB, чтобы написать текстовый файл, который код ExtendScript может читать и анализировать.
  • Есть код VB добавить «ScriptLabel» в документ Adobe Illustrator. Затем используйте ExtendScript для чтения той же метки. Это действительно то же самое, что писать текстовый файл, но просто нет файла.

НТН

Джон С. Зимы, ExtendScript поддержки, электронное издание поддержка

+0

Я немного смущен этой опцией, хотя раньше я ее не замечал. Каким сценарием для Adobe/ExtendScript это? Я замечаю, что ссылки на справочные документы сценариев Illustrator CS6 написаны, что doScript доступен для VBScript и Applescript, а для VBScript есть do doJavascript (для выполнения кода ExtendScript). ExtendScript, который обычно является Javascript (для приложений Adobe), не упоминает doScript() в документах. Какой документ упоминает об этом? Или вы имели в виду что-то еще, чтобы прояснить? – David

2

Illustrator скриптовый движок не предусмотрено никакого механизма для чтения внешних данных напрямую, но у вас есть несколько способов сделать это ...

  1. Напишите внешнюю программу, которая соединяет базу данных для генерации сценария VB и использует Illustrator для выполнения «сгенерированного» скрипта t, который является старым способом, который я сделал.
  2. Новый ScriptUI, поскольку обеспечивает cs3, чтобы открыть окно, содержащее Flash SWF в качестве интерфейса для привода Иллюстратор JS двигатель. Вы можете прочитать xml, вызвать веб-службы, Flash Remoting внутри флэш-контента. Я не уверен, что вам удобны эти инструменты.
+0

У вас есть дополнительная информация или ссылки о вашем втором методе? –

+0

да, вы можете сделать HTTP-запрос http://old.code.zhdk.ch/projects/CERNRepository/browser/eBulletin/Submission/InDesignJS/HttpLibrary.jsx или вы можете прочитать файл локально как CSV – Lukasz

+0

Я просто хотел отметим, что с помощью механизма сценариев мы подразумеваем собственный механизм ExtendScript для приложений Adobe. Поскольку все приложения Adobe (в Windows) также выставляют COM API/движок, который может использоваться VBScript и другими совместимыми с COM-совместимыми языками. Хотя мы не знаем, нужна ли OP только опция ExtendScript. – David

2

У меня немного другое решение, я успешно использовал: Создать веб-сервиса, который имеет доступ к БД, а затем из ExtendScript использовать соединение HTTP потреблять услуги (а оттуда вы можете сделать довольно что бы вы хотели).

3

да, ES может читать томов CSV. просто отформатируйте свою базу данных с помощью разметки запятой.

здесь есть функция, которая должна сделать трюк:

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(",") 

    } 
}; 

возвращает массив, что вам нужно. VB экспортировать базу данных и просто использовать ее для ее чтения. donezo.

+0

, пожалуйста, рассмотрите вопрос о голосовании или примите этот ответ, если этого достаточно. – Lukasz

+0

FYI, это также может быть полезно для чтения CSV в ExtendScript: https://github.com/fabiantheblind/extendscript.csv – David

0

ли или не нужно реорганизовать VB не ExtendScript 100% (без кода VB, все ExtendScript), я бы сказал, самое простое решение что-то вроде этого:

Есть обертку VB/VBScript, который вызывает ExtendScript, и эта оболочка обрабатывает взаимодействие с базой данных и передает данные обратно & вперед в ExtendScript. Это позволяет сохранить код базы данных простым повторным использованием того, что у вас есть в VB, и сохранить ExtendScript просто.

Вы можете вызвать ExtendScript из VB/VBScript, используя COM API приложения Adobe, который имеет все методы рисования, которые вы получаете из метода ExtendScript plus doJavascript() для выполнения кода javascript (или более реалистичного ExtendScript). Этот же метод doJavascript() может использоваться для вытягивания файлов JSX ExtendScript, а не фрагмента кода javscript. Вы можете найти более подробную информацию в родственной SO сообщение:

Is it possible to execute JSX scripts from outside ExtendScript?

посмотреть на ответы, которые являются для Windows специфичны. Принимая это решение &, он может работать и на других платформах (Mac, Python, Perl и т. Д.), Он не обязательно должен быть для VB и Windows, тот же подход может использоваться для взаимодействия с ExtendScript извне через COM on Windows или Applescript на Mac, и это будет работать с любым языком, совместимым с COM/Applescript (или сопряжением).