k_ikiの雑記帳

DTPのこと、創作のことなど、思いつくまま

ドキュメントサイズの変更 続き

躓いた。
CS4なのにドキュメントの原点、すべて左上になってやんの。
だから昨日のスクリプト走らせたら、アートボードが既存オブジェクトの上にいっちゃう(^^;
そこで改善。
改善ポイントとしては、フォルダを指定できるようにしたことと、
処理の前にドキュメントの原点を左下に移動しておいたこと。
 

アートボードのサイズを、先に描画した四角形と同じにすればいいのだから、ファイルのcropBoxに四角形のvisibleBoundsを入れてやればいいことにようやく気付いたのでそのようにした。
最後に、saveのとこでsaveASって書いてて詰まってて、Twitterでフォロワー様に助けていただいた。
いつも本当にお世話になっております。
その後、やはりsaveAsで別フォルダに保存したくなり、VoostOn様の記事のお世話になった。

  

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();
			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
			
			ex_artboard ();
			
			//ファイル名に手を加えたい場合
			/*
			var namecount = (fileObj.name).lastIndexOf("."); // fileObj.nameの値で"."の位置を取得
			var fname = (fileObj.name).substr(0, namecount);
			var savefile = new File(folder.fsName+"/"+fname+"_v10.ai");// バージョン名と拡張子は適宜変更
			*/
			//ファイル名を変更しない場合
			var savefile = new File(folder.fsName);

			my_Doc.saveAs(savefile,saveOptions);
			activeDocument.close(SaveOptions.DONOTSAVECHANGES);
			}
		}
	}
alert("処理が完了しました。スクリプトを終了します。");

function ex_artboard(){
	var docObj = app.activeDocument;
	var o = docObj.rulerOrigin;
	var my_origin = [o[0], o[1]];
	docObj.rulerOrigin = [0, 0];
	var mm = 2.834645/1;
	var recObj = docObj.pathItems.rectangle(-1.5*mm,-1.5*mm,28*mm,-28*mm);
	recObj.filled = false;
	recObj.stroked = false;
	docObj.cropBox = recObj.visibleBounds;
	docObj.rulerOrigin = my_origin;
	}