« 桜と菜の花 | メイン | Behanceを始めてみました。その他、動向など。 »
2014年3月19日
Indesign / 指定ディレクトリ下の*.inddに指定されてインストールされてないフォントを列挙してテキストファイルに書き出す >>Indesign
Indesign で 指定ディレクトリ下の*.inddでフォントが環境下にないものを列挙するスクリプトサンプル
IdCS4,5.5で確認。
目視でフォントリストをみて、エラーのフォントをメモしていくなんてやってられるか、と。ということで以前に作ったもの。ファイルが多いプロジェクトだと役に立つと思う。
This script creates a list of missing fonts in an environment of specified directory under *. Indd in Indesign.
IdCS4,5.5で確認。
目視でフォントリストをみて、エラーのフォントをメモしていくなんてやってられるか、と。ということで以前に作ったもの。ファイルが多いプロジェクトだと役に立つと思う。
This script creates a list of missing fonts in an environment of specified directory under *. Indd in Indesign.
/*
JSX Start
*/
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;//CS3でのおまじない(ダイアログウインドウの表示許可みたいなもの)
F_main();
function F_main() {
wObj = app.dialogs.add({ name:"選択してください" });
tmp1 = wObj.dialogColumns.add();
tmp2 = tmp1.radiobuttonGroups.add();
// tmp3_1 = tmp2.radiobuttonControls.add({staticLabel: "ErrList", minWidth:120, checkedState:true});
var wObj_show = wObj.show();
if(wObj_show == false){ //選択ダイアログでキャンセルを押したらここを通る
exit();
}
var document_open_folder = Folder.selectDialog("Indesignドキュメントのあるフォルダを選択してください");
if (document_open_folder == null){ //フォルダ選択ダイアログでキャンセルを押したらここを通る
exit();
}
var save_folder = Folder.selectDialog("保存するフォルダを選択してください");
if (save_folder == null){ //フォルダ選択ダイアログでキャンセルを押したらここを通る
exit();
}
var indd_List = F_findFile(document_open_folder); //関数呼び出し(選択フォルダ以下全てのinddファイル取得)
if ( indd_List.length===0 ) { //返り値の配列が0なら
alert("Indesignファイルが見つかりませんでした");
exit();
}
// if (tmp3_1.checkedState == true){ //★★★PS保存の場合★★★
F_errFonts(indd_List,save_folder);
// }
alert("終了しました");
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//再帰処理のfunction
function F_findFile(document_open_folder) {
var indd_List=[]; //返り値用の配列
var all_List = document_open_folder.getFiles(); //フォルダの内容を全て取得
for (var i=0; i < all_List.length; i++) {
if(all_List[i] instanceof Folder) { //フォルダなら...
var res = F_findFile(all_List[i]); //再帰的呼び出し
indd_List=indd_List.concat(res); //返り値を配列に加える(配列の結合)
}
var all_List_fName = all_List[i].name;
if (all_List_fName.match (/\.indd/)) {
indd_List.push(all_List[i]);
}
}
return indd_List; //配列を返す
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function F_errFonts(indd_List,save_folder){
var msgs = "";
var PDFfolder_name = save_folder.fsName; //save_folderから保存フォルダのフルパスをとり変数PDFfolder_nameに入れる
myFileName = "/" + PDFfolder_name + "/" + "errorfonts_with.txt";
myFileObject = new File(myFileName);
myFlag = myFileObject.open("w");
//プログレスバー処理*******************************************************
function createProgressBarPanel (){
var pBar = new Window("window", "Err吐き出し中");
pBar.msg = pBar.add("statictext", [12,12,400,32], "処理中...");
pBar.progressBar = pBar.add("progressbar", [12,32,400,54],0,indd_List.length);
return pBar;
}
var pbarPanel = createProgressBarPanel();
var bar_num = 1;
//*********************************************************************
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT; //CS3でのおまじない(ダイアログウインドウの表示許可みたいなもの)
function readFont() {
myDocument = app.activeDocument;
for (var i = 0; i < myDocument.fonts.length; i++)
{
var fontObj = myDocument.fonts[i];
//$.writeln(fontObj.name);
if (fontObj.status != FontStatus.INSTALLED)
{
//var fontName = fontObj.fontFamily + " " + fontObj.fontStyleName;
//tmpArray.push(fontObj.name);
//errormsg += docFonts[i].fontFamily + '\r';
msgs = msgs + file_name + "\t" + fontObj.fontFamily + "\r";
//$.writeln(fontObj.name);
}
}
}
for(j = 0; j < indd_List.length; j++){
app.open(File(indd_List[j])); //ファイルを開く
pbarPanel.show();//プログレスバー処理******
var file_name = app.activeDocument.name; //今開いているドキュメントの名前をfile_nameに取得
readFont();
app.activeDocument.close(SaveOptions.no); //ドキュメントを保存しないで閉じる
pbarPanel.progressBar.value = bar_num;//プログレスバー処理******
bar_num = bar_num + 1;//プログレスバー処理******
} //forの閉じ
pbarPanel.close();//プログレスバー処理******
//alert(msgs);
myFileObject.write(msgs);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
トラックバック
現在、この記事はトラックバックを受け付けておりません。
コメント
現在、この記事はコメントを受け付けておりません。
この記事をTwitterでみんなに教える。