都内でデザイナー職をやっています
目指すこと
Illustratorの『スクリーン用に書き出し』をスクリプトにやってもらい
アートボードごとにSVGを書き出す
リファレンスを見る
https://www.adobe.com/devnet/illustrator/scripting.html
JavaScript、VB Script、AppleScript でのそれぞれのリファレンスが
PDF がダウンロードできるAdobe公式のページ
それはやばいものだった
- PDFである
- あのAdobeぞ? Acrobat作っている Adobeぞ? なので仕方ない
- PDFにロックがかかっており、テキストのコピーすらできない
- 英語のため、翻訳しようと思ったときに困る 英語が読めれば問題ないから仕方ない
- コードもすべて写経しないといけない 写経は大事だから仕方ない
- スクリーン用に書き出し のスクリプトがない
- CC2015くらいから導入されたはずだけど まぁ比較的新しい機能だから仕方ない
- スクリプトでできるようになったのは CC2018 からで、CC2017までのリファレンスしかないから仕方ない
仕方ない
Google検索で情報を集めることにした
なお
ドキュメント自体を保存(Cmd+S)させる exportFile はリファレンスで解説されている
それでもSVGの出力をすることができるが、元のドキュメントへの影響がありそうなので使わない
コード
export-svg.js
# target "Illustrator";
var doc = app.activeDocument;
// 保存するフォルダを選択させる
var folder = Folder.selectDialog();
if (!folder) return;
var file = new File(folder + '/');
var whatToExport = new ExportForScreensItemToExport();
whatToExport.document = true;
var options = new ExportForScreensOptionsWebOptimizedSVG();
options.coordinatePrecision = 2;
options.cssProperties = SVGCSSPropertyLocation.PRESENTATIONATTRIBUTES;
options.documentEncoding = SVGDocumentEncoding.UTF8;
options.saveMultipleArtboards = true;
// (exportFolder: File , exportFormat: ExportForScreensType , options:any, itemToExport: ExportForScreensItemToExport , fileNamePrefix: string )
doc.exportForScreens(file, ExportForScreensType.SE_SVG, options, whatToExport, '');
設定の内容
ExportForScreensItemToExport
ここの画面での設定と同じ
| オプション | 型(予想) | 内容 |
|---|---|---|
| document | boolean | 不明 trueにするのがよさそう? |
| artboards | string | 書き出し範囲のこと01-50などと指定省略はすべてのアートボードを出力 |
| その他 | 不明 今後のリファレンスに期待 |
ExportForScreensOptionsWebOptimizedSVG
この画面での設定と同じ
リファレンスの ExportOptionsSVG と同じ内容が書けるっぽい
| オプション | 型 | 内容 |
|---|---|---|
| compressed | boolean | svgzに圧縮するかどうか |
| coordinatePrecision | number(long) | 小数点以下の桁数 パスの精密度に影響 |
| cssProperties | SVGCSSPropertyLocation | スタイル インラインスタイルにするかとか |
| documentEncoding | SVGDocumentEncoding | svgファイルのエンコード |
| DTD | SVGDTDVersion | SVGのバージョンSVGDTDVersion.SVG1_1とか |
| saveMultipleArtboards | boolean | アートボードごとに保存するかどうかexportFileでは必要だが、おそらく不要 |
| その他 | いろいろ |
おわりに
Adobeのリファレンスについては、もっと扱いやすいようにしてほしさがある
また今回のスクリプトだけでは利点は特にないが、他のスクリプトと組み合わせて楽に仕事をしたい