ドキュメントサイズの変更 その3
今回の例のように原点座標がカスタマイズされている場合もあるけれど、
CS4以前とCS5以降とではそもそもIllustratorのデフォルト原点が違う。
今回はバージョンCS4のみで保存されたデータだという前提条件なので
前回のスクリプト内容で問題ないのだが、
万が一CS5以降で保存されたデータが混じっていたら厄介だ。
そこで、shspage様で紹介されていた手法をお借りすることに。
Javascript自体を勉強しなきゃ知らないことだらけだ俺。
thisの使い方ってこういう感じなのですね。もの凄く勉強になりました。
ついでに、ドキュメントの横幅と高さを入力するようにした。
/* CS5以降で保存されたドキュメントが混じっている場合は CS5以降のバージョンの Illustrator で開く。 保存バージョンを変更したければ saveOptions.compatibility の行を編集する。 */ function Origin(){ this.ver15_or_later = (parseFloat(version.substr(0, 2)) >= 15); // CS5 or later this.ver14 = (version.substr(0, 2) == "14"); // CS4 if(this.ver15_or_later){ this.saved_coord_system = app.coordinateSystem; app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM; var idx = app.activeDocument.artboards.getActiveArtboardIndex(); this.ab = app.activeDocument.artboards[idx]; var o = this.ab.rulerOrigin; var r = this.ab.artboardRect; this.saved_origin = [o[0], o[1]]; this.ab.rulerOrigin = [0, r[1] - r[3]]; } else if(this.ver14){ var o = app.activeDocument.rulerOrigin; this.saved_origin = [o[0], o[1]]; app.activeDocument.rulerOrigin = [0, 0]; } this.restore = function(){ if(this.ver15_or_later){ this.ab.rulerOrigin = this.saved_origin; app.coordinateSystem = this.saved_coord_system; } else if(this.ver14){ app.activeDocument.rulerOrigin = this.saved_origin; } }; return this; } // --------------------------------------------------------- var x_width = prompt("横幅は何mm?","210"); var y_height = prompt("高さは何mm?","297"); var folderObj = Folder.selectDialog("Illustratorファイルの入っているフォルダを選択してください"); var folder = Folder.selectDialog("保存するフォルダを選択してください"); if (folderObj != null){ fileList = new Array; fileList = folderObj.getFiles("*.ai"); for (f = 0 ; f <= fileList.length-1 ; f++){ var fileObj = new File(fileList[f]); open(fileObj); flag = fileObj.open(); if (flag == true){ var my_Doc = app.activeDocument; var saveOptions = new IllustratorSaveOptions(); //下記、CS5:Compatibility.ILLUSTRATOR15 / CS6:Compatibility.ILLUSTRATOR16 とする saveOptions.compatibility = Compatibility.ILLUSTRATOR14;// バージョン:CS4 saveOptions.fontSubsetThreshold = 100;// 使用している文字の割合が次より少ない場合サブセットにする。 saveOptions.pdfCompatible = true;// PDF互換ファイルを作成するか否か saveOptions.embedICCProfile = true;// ICCプロファイルを埋め込むか否か 【10 or later】 saveOptions.embedLinkedFiles = false;// 配置した画像を含むか否か 【7 or later】 saveOptions.compressed = false;// 圧縮を使用するか否か saveOptions.flattenOutput = OutputFlattening.PRESERVEAPPEARANCE;// アピアランスを保持 / パスを保持:PRESERVEPATHS saveOptions.overprint = PDFOverprint.PRESERVEPDFOVERPRINT;// オーバープリントを保持 / オーバープリントを破棄:DISCARDPDFOVERPRINT var g_origin = Origin(); var mm = 2.834645/1; var my_x = x_width*mm; var my_y = y_height*mm; var ido_x = my_Doc.width/2 - my_x/2; var ido_y = my_Doc.height/2 - my_y/2; var recObj = my_Doc.pathItems.rectangle(ido_y, ido_x, my_x, - my_y); recObj.filled = false; recObj.stroked = false; my_Doc.cropBox = recObj.visibleBounds; g_origin.restore(); //ファイル名に手を加えたい場合 /* var namecount = (fileObj.name).lastIndexOf("."); // fileObj.nameの値で"."の位置を取得 var fname = (fileObj.name).substr(0, namecount); var savefile = new File(folder.fsName+"/"+fname+"_CS4.ai");// バージョン名と拡張子は適宜変更 */ //ファイル名を変更しない場合 var savefile = new File(folder.fsName); my_Doc.saveAs(savefile,saveOptions); activeDocument.close(SaveOptions.DONOTSAVECHANGES); } } } alert("処理が完了しました。スクリプトを終了します。");