Translate

ラベル extendscripttoolkit の投稿を表示しています。 すべての投稿を表示
ラベル extendscripttoolkit の投稿を表示しています。 すべての投稿を表示

2016年7月26日火曜日

【indesign】【javascript】不足フォントのバージョンとpostscriptnameを取得

indesignでフォント情報がないものの一覧を作成し、postscriptname,versionを取得する
document.fontでプロパティを得ようとすると、置き換えられた後のフォント情報が手に入ってしまうので、
postscriptnameとversionはxmpから入手する。
(「フォント検索」で表示される、置き換えられる前のフォント情報がほしかったが、fontのプロパティは置き換えられた後のもので、置き換え前のものにはアクセスできなかった。
テキストファイルで強引に開くとメタデータとして残っているようだったので、色々と検索した結果、xmpに行きついた)

http://chuwa.iobb.net/tech/archive/2014/06/xmp-1.html
こちらに詳しい。 ありがたや。
改変したものが以下。

fontproperty ={};//ここに集約される

var f = app.activeDocument.fullName.fsName;
read(f);
function read (fls){
     var property = "Fonts";
     var ns ="http://ns.adobe.com/xap/1.0/t/pg/";
     var xmpLib = new ExternalObject('lib:AdobeXMPScript');
     var xmpFile = new XMPFile(fls, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_READ);
     var xmpPackets = xmpFile.getXMP();
     var xmp = new XMPMeta(xmpPackets.serialize());
     for (var i=1;i<=xmp.countArrayItems(ns,property);i++){//xmpは1から数えるんですって
         var postscriptname = xmp.getProperty(ns, property + "[" + i + "]" + "/stFnt:fontName").toString();
         var version = xmp.getProperty(ns, property + "[" + i + "]" + "/stFnt:versionString").toString();
         version = version.split(postscriptname)[1];
         fontproperty[postscriptname] = version ;
      }
}
これで、ドキュメント内の全てのフォントの、置き換え前のfontバージョンがpostscriptnameをkeyにして手に入る。・・・①
後は、document.fontから使用しているpostscriptnameを取得し、・・・②
①のpostscriptnameと②のpostscriptnameを照合すれば、
documentのfont全ての置き換え前のversionが手に入るというわけ。

2016年6月1日水曜日

【mac】【extendscripttoolkit】macのフォルダ名に半角スラッシュが使える?

ADOBEのextendscripttoolkitを使って、社内向けに簡単なリネームスクリプトやファイルの仕分けスクリプトを書くことがある。
今回の依頼は、複数あるフォルダ名にある文字と数値が振ってあるので、それを集計して欲しいという内容だった。
(例)/hoge03/huga05/
それらを種類ごとに集計し、csvに書き出すという内容で、そこまで難しくなかったのだが、苦戦したのがフォルダの名前だった。
この件では、欲しい情報半角スラッシュで区切られている。
フォルダ名を文字列で取得し、

foldername.split("/");

で区切ろうとしても、うまく行かない。
よく考えたら、フォルダ名に半角スラッシュってどうなの?下の階層と勘違いされないの?と、疑問だらけだったが、
試しにalert(foldername)とすると、
/hoge03/huga05/ → :hoge03:huga05:
と表示される。つまり、見た目はスラッシュだけど、本当は半角コロンってこと?
試しに
foldername.split(":");
とすると、実際うまくいった。納得いかないが、これがmacの仕様のようだ。

※ちなみに、半角スラッシュをやめてアンダーバーにしろという意見は却下された。