リモートデスクトップ 新規セッションで接続しない
「ファイル名を指定して実行」から
mstsc -v:192.168.1.52 /F -console
通常だと新規セッションで接続してしまうので、新しい画面での操作になってしまう。
祝日ロジック修正した箇所
http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm#JS
↑こちらのスクリプトから改変した場所
tsunodaholiday.jsxとかにして、ライブラリ化としておけば、InDesignでもイラレでも使えるかと?
///ネームスペースもどき var tsunodaholiday = new Object (); tsunodaholiday.MONDAY = 1; tsunodaholiday.TUESDAY = 2; tsunodaholiday.WEDNESDAY = 3; tsunodaholiday.cstShowaTaiso = new Date(1989,2-1,24); tsunodaholiday.cstNorihitoKekkon = new Date(1993,6-1,9); tsunodaholiday.cstSokuireiseiden = new Date(1990,11-1,12); tsunodaholiday.cstImplementHoliday = new Date(1973,4-1,12);
functionは全てtsunodaholiday.をつれて↓こんな感じに変更。
tsunodaholiday.ktHolidayName = function ktHolidayName(y,m,d)
ktHolidayNameはy,m,dを渡すように変更してm-1しておくようにした。
あとはソース内の関数名を置換で終わり。
使いたいプログラムでインクルードして
alert(tsunodaholiday.ktHolidayName(2009,9,21));
とでもして、試してみる。
イラレでカレンダー
そんなわけで、カレンダー作成スクリプトを作成してみた。
どーいうわけか、環境は
Windows XP Illustrator CS3
なぜかイラストレータで挑戦してみた。なんとなく・・・
休日ロジックは
http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm#JS
↑こちらのロジックを使用させて頂きました。若干修正して、ライブラリ化してインクルードしています。
人のソースなので転載しちゃだめだろうな・・・
#include '~/My Documents/tsunodaholiday.jsx'; //////// var Sat_color; var San_color; var Week_color; var Page_doc; var Text_obj; var Kiten_x; var Kiten_y; var Font_obj; var Year_u = (new Date()).getFullYear(); var Month_u = (new Date()).getMonth() +1; //// ///マックは'Osaka'とか var Font_name = 'MS-Gothic'; /////init//////// setColor(); ////基準点 Kiten_x = mmToPoint(10); Kiten_y = mmToPoint(287); ///行間隔 Gyo_kan = mmToPoint(7); Ji_kan = mmToPoint(6); //////////////// ////新規ページ Page_doc = documents.add(DocumentColorSpace.CMYK,mmToPoint(210),mmToPoint(297)); var userprompt = prompt("西暦4桁",Year_u); Year_u = userprompt for(var i=1;i<=12;i++) { Month_u = i; var Line_counter = 0; var Text_obj_x; var Text_obj_y; var Days__ = new Array(); var Holiday__ = new Array(); var IX; main(); Kiten_x += mmToPoint(60); if(i % 3 == 0) { Kiten_y -= mmToPoint(60); Kiten_x = mmToPoint(10); } } ////////function//////////////// function main(){ Text_obj_x = Kiten_x; Text_obj_y = Kiten_y; ///タイトル作成 wrTitle(Year_u+'年'+Month_u+'月'); ///Y軸下げ Text_obj_y -= Gyo_kan; ///曜日作成 wrWeek(); ///Y軸下げ Text_obj_y -= Gyo_kan; ///X軸戻し Text_obj_x = Kiten_x; ///本体作成 Days__ = calendar(Year_u,Month_u); for(var i=0;i<Days__.length;i++) { IX = i; Line_counter++; makeDay(Days__[i]); if(Line_counter == 7){ Line_counter = 0 Text_obj_y -= Gyo_kan; Text_obj_x = Kiten_x; } } } //////配列を返す function calendar(year,month){ var week; var day_count = 1; var month_end_day__ = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31); var result__ = new Array(); var theDate = new Date(); ///閏年の判定 if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { month_end_day__[2] = 29; } theDate.setFullYear (year); theDate.setMonth (month -1); theDate.setDate (1); week = theDate.getDay(); ///空白 for(var i=0;i<week;i++) { Holiday__[i] = false; result__[i] = ' '; } ///日にち for(var i=week;i<= 42;i++) { if(tsunodaholiday.ktHolidayName(parseInt(year),parseInt(month),parseInt(day_count)) != ""){ Holiday__[i] = true; }else{ Holiday__[i] = false; } result__[i] = day_count; day_count++; if(day_count > month_end_day__[month]) break; } return result__; } function makeDay(moji){ var text_obj; text_obj = Page_doc.textFrames.add(); text_obj.contents = String(moji); mojiKazari(text_obj,Font_name,8,Line_counter); text_obj.left = Text_obj_x; text_obj.top = Text_obj_y; Text_obj_x += Ji_kan; text_obj.paragraphs[0].justification = Justification.CENTER; } function mojiKazari(textObj,fontname,size,line){ var fonttype = app.textFonts.getByName(fontname); for(var i=0;i < textObj.characters.length;i++) { textObj.characters[i].textFont = fonttype; textObj.characters[i].fillColor = Week_color; if(line == 1) textObj.characters[i].fillColor = San_color; if(line == 7) textObj.characters[i].fillColor = Sat_color; if(Holiday__[IX]) textObj.characters[i].fillColor = San_color; textObj.characters[i].size =size; //pt } } function wrTitle(title){ ////基準点から作成 var title_obj; var font_obj = app.textFonts.getByName(Font_name); title_obj = Page_doc.textFrames.add(); title_obj.contents = String(title); title_obj.left = Kiten_x; title_obj.top = Kiten_y; wrMoji(title_obj,font_obj,Week_color,10); } function wrWeek(){ var fonttype = app.textFonts.getByName(Font_name); var week__ = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); var text_obj; for(var i=0;i<week__.length;i++) { text_obj = Page_doc.textFrames.add(); text_obj.contents = week__[i]; text_obj.left = Text_obj_x; text_obj.top = Text_obj_y; Text_obj_x += Ji_kan; mojiKazari(text_obj,Font_name,6,i+1); text_obj.paragraphs[0].justification = Justification.CENTER; } } function wrMoji(tx_obj,font_obj,color_obj,size){ for(var i=0;i < tx_obj.characters.length;i++) { tx_obj.characters[i].textFont = font_obj; tx_obj.characters[i].fillColor = color_obj; tx_obj.characters[i].size = size; } } function setColor(){ Sat_color = new CMYKColor(); Sat_color.cyan = 100; Sat_color.magenta = 0; Sat_color.yellow = 0; Sat_color.black = 0; San_color = new CMYKColor(); San_color.cyan = 0; San_color.magenta = 100; San_color.yellow = 0; San_color.black = 0; Week_color = new CMYKColor(); Week_color.cyan = 0; Week_color.magenta = 0; Week_color.yellow = 0; Week_color.black = 100; Gray_color = new CMYKColor(); Gray_color.cyan = 0; Gray_color.magenta = 0; Gray_color.yellow = 0; Gray_color.black = 50; } function mmToPoint(mm){ return mm * 2.834; }
だらだら、適当に書きましたので、洗練されてませんが・・・
setMonth()
カレンダーを作ることにしました。そんなロジック転がっているけども、人の書いたものってよくわからない・・・。
ということで車輪の再開発を決意。と、思ったけど、曜日がとれない。今日って水曜なんだけども、5が返ってくる・・・。
setMonth()の引数って(月-1)なのね・・・
9月だったらsetMonth(8)なのね・・・。
知りませんでした、すいません・・・。
前途多難。
オブジェクトサイズの調整
Obj.fit(FitOptions.contentToFrame); //内容をフレームに合わせる
FitOptions.frameToContent フレームを内容に合わせる
FitOptions.centerContent 内容を中央に合わせる
FitOptions.proportionally 内容を縦横比率に応じて合わせる
FitOptions.fillProportionally フレームに均等に流し込み
インデザインメニューの[オブジェクト]>[オブジェクトサイズの調整]の操作
ファイルかフォルダの判定
バイブルのInDesign自動処理実例集に記載されていた・・・
P152下 getFiles フォルダならundefined ファイルならオブジェクトを返すって書いてある。
しかも、サブフォルダを含むファイル一覧の処理までも・・・・
でも書いてみるとファイルの場合にundefinedが返ってくるんだよなぁ〜。
OSX 10.4 CS3
#include "~/Library/IddJavascript/spaceiru.jsx" if(spaceiru.system.selectFolder()== false){ alert('ユーザーによってキャンセルされました。'); exit(); } ////選択フォルダ var baseFolder = spaceiru.system.getFoldername(); var list = (new Folder(baseFolder)).getFiles (); for(var i=0;i<list.length;i++) { for(var i=0;i<list.length;i++) { alert(list[i].getFiles); } }
PDF書き出し
結局なにをしたかったかと言うと、特定のフォルダのインデザインファイルのPDF書き出しの自動化。
フォントチェックとリンクチェックをしてから書き出し。
OSX10.4 CS3
メインスクリプト
#include "~/Library/IddJavascript/spaceiru.jsx" ////////////////////// ////PDF書き出しのプリセット名の指定があったら書く。指定がない場合は空にする。 var pdfPreSetName = '[プレス品質]'; ///////////////////// ////ファイルオープン時に警告ダイアログを出さない。 app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT; if(spaceiru.system.selectFolder('インデザインフォルダ')== false){ alert('ユーザーによってキャンセルされました。'); exit(); } ////選択フォルダ var baseFolder = spaceiru.system.getFoldername(); ////書き出しフォルダ if(spaceiru.system.selectFolder('書き出しフォルダ')== false){ alert('ユーザーによってキャンセルされました。'); exit(); } var outputFolder = spaceiru.system.getFoldername(); ///確認 if(confirm('本当に実行しますか?') == false) { exit(); } ///ライブラリ初期設定 選択フォルダのパスを渡す spaceiru.idd.initIdd(baseFolder); ///ライブラリメイン処理 spaceiru.idd.getIdd(); ///結果取得(パスが配列で返る) var iddFile = spaceiru.idd.getResult(); ///結果取得(ファイル名) var iddFileName = spaceiru.idd.getResult('file'); for(var i=0;i<iddFile.length;i++) { //オープン openfile(iddFile[i]); //リンクとフォントのチェックして書き出し if((spaceiru.idd.linkCheck() == true) && (spaceiru.idd.fontCheck() == true)){ exportPDF(outputFolder,iddFileName[i]); } //クローズ closefile(); } ////ファイルオープン時の警告ダイアログを元に戻す app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL; ///////////////////function///////////////////////// function openfile(name){ var fileobj; fileobj = app.open(new File(name)); } function closefile(){ app.activeDocument.close(SaveOptions.no); } function exportPDF(path,name){ ////拡張子をpdfにする name = name.replace (/\.[^\.]*$/,".pdf"); path = path + '/' + name; fileobj = new File(path); if(pdfPreSetName == '') { app.activeDocument.exportFile(ExportFormat.pdfType, fileobj, false); }else{ app.activeDocument.exportFile(ExportFormat.pdfType, fileobj, false,pdfPreSetName); } }
インクルードファイル spaceiru.jsx
//namespace spaceiru // // // var spaceiru = new Object(); spaceiru.system = new Object(); spaceiru.idd = new Object(); spaceiru.foldername = ""; spaceiru.system.selectFolder = function selectFolder(mes){ if(mes == undefined){ mes = 'フォルダを選択してください。'; } var folderObj; var foldername; foldername = Folder.selectDialog (mes); if(foldername != null){ spaceiru.system.setFoldername(foldername); return true; }else{ return false; } } spaceiru.system.getFoldername = function getFoldername(){ return spaceiru.foldername; } spaceiru.system.setFoldername = function setFoldername(name){ spaceiru.foldername = name; } //////////////////idd File Select///////////////// /////////////////////////////////////////////// spaceiru.idd.initIdd = function initIdd(folder){ spaceiru.idd.baseFolder = folder; spaceiru.idd.presentFolder = spaceiru.idd.baseFolder; spaceiru.idd.count = 0; spaceiru.idd.presentRoop = new Array(); spaceiru.idd.baseFilecont = (new Folder(spaceiru.idd.baseFolder)).getFiles().length; spaceiru.idd.checkFolderName; ///結果を入れる配列 フルパス spaceiru.idd.result = new Array(); ////結果を入れる配列 ファイル名 spaceiru.idd.resultFilename = new Array(); } spaceiru.idd.getIdd = function getIdd(){ spaceiru.idd.presentRoop[0] = 0; if(spaceiru.idd.baseFilecont == 0) return; while(spaceiru.idd.presentFolder != false) { spaceiru.idd.presentFolder = spaceiru.idd.checkFolder(spaceiru.idd.presentFolder,spaceiru.idd.presentRoop[spaceiru.idd.count]); if(spaceiru.idd.presentFolder == false) { if(spaceiru.idd.count > 0){ spaceiru.idd.count -= 1; } ///親にセット spaceiru.idd.presentFolder = (new Folder(spaceiru.idd.checkFolderName)).parent.fsName; if((spaceiru.idd.count == 0) && ( spaceiru.idd.baseFilecont == spaceiru.idd.presentRoop[0])) { ///終了 spaceiru.idd.presentFolder = false; } }else{ ///次の階層 spaceiru.idd.count += 1; spaceiru.idd.presentRoop[spaceiru.idd.count] = 0; } } } spaceiru.idd.checkFolder = function checkFolder(name,start){ var list = (new Folder(name)).getFiles (); var result = false; for(var i=start;i < list.length;i++) { spaceiru.idd.presentRoop[spaceiru.idd.count] = i +1 ; var len = (new Folder(list[i].fsName)).getFiles().length; if(len > 0) { result = list[i].fsName; break; }else{ spaceiru.idd.setResult(list[i]); } } spaceiru.idd.checkFolderName = name; return result; } /////ファイル名チェック spaceiru.idd.setResult = function setResult(obj){ var name = obj.name; var path = obj.fsName; if(name.match(/\.indd$/g)) { spaceiru.idd.result.push(path); spaceiru.idd.resultFilename.push(name); } } ////引数があればファイル名を返す spaceiru.idd.getResult = function getResult(type){ if(type == undefined){ return spaceiru.idd.result; }else{ return spaceiru.idd.resultFilename; } } /////リンクチェック ////全てリンクされてたらTrue spaceiru.idd.linkCheck = function linkCheck(){ var allLinks = app.activeDocument.links; var result = true; for(var i=0; i < allLinks.length;i++) { if((allLinks[i].status == LinkStatus.linkMissing) || (allLinks[i].status == LinkStatus.linkOutOfDate)) { result = false; break; } } return result; } ////フォントチェック ///全て適用されたらTrue spaceiru.idd.fontCheck = function fontCheck(){ var docObj = app.activeDocument; var result = true; for(var i=0; i < docObj.fonts.length;i++) { if(docObj.fonts[i].status != FontStatus.installed) { result = false; break; } } return result; }
どーだろう?