JavascriptでEventListenerでbeforePrint

[6309]JavascriptでEventListenerでbeforePrint | 投稿者:(z-) | 投稿日:2011/11/18(Fri) 12:59:24
OS10.4.11 CS3
OS10.5.8  CS3, CS4 で確認

スクリプティングガイドに記載されているイベントの例文『「beforePrint」eventListener の例』をStartupScripts CSx/Adobe InDesign フォルダに保存してアプリケーションを起動したところ、出るべきダイアログがプリント前に3回出るので困りました。
app.eventListeners.length など逐一覗いてみていると、length=4 となっており、以後プリント作業をするたび4ずつ増加しているようです。
スクリプトパネル上から実行すると期待通りに動作するようです。
原因と対策についてわかる方、教えて頂けると助かります。

例文をペーストしておきます。よろしくどうぞ

//BeforePrint.jsx
//An InDesign CS3 JavaScript
#targetengine "session"
//Adds an event listener that performs a preflight check
//on a document before printing. If the preflight check fails,
//the script gives the user the opportunity to cancel the print job.
main();
function main(){
var myEventListener = app.eventListeners.add("beforePrint",
function(myEvent){
//The parent of the event is the document.
var myDocument = myEvent.parent;
if(myPreflight(myDocument) == false){
myEvent.stopPropagation();
myEvent.preventDefault();
alert("Document did not pass preflight check.Please fix the problems and try again.");
}
else{
alert("Document passed preflight check. Ready to print.");
//myDocument.print(true);
}
function myPreflight(myDocument){
var myPreflightCheck = true;
var myFontCheck = myCheckFonts(myDocument);
var myGraphicsCheck = myCheckGraphics(myDocument);
alert("Fonts: " + myFontCheck + "\r" + "Links:" + myGraphicsCheck);
if((myFontCheck == false)||(myGraphicsCheck == false)){
myPreflightCheck = false;
}
return myPreflightCheck;
}
function myCheckFonts(myDocument){
var myFontCheck = true;
for(var myCounter = 0; myCounter < myDocument.fonts.length; myCounter++){
if(myDocument.fonts.item(myCounter).status !=FontStatus.installed){
myFontCheck = false;
}
}
return myFontCheck;
}
function myCheckGraphics(myDocument){
var myGraphicsCheck = true;
for(var myCounter = 0; myCounter < myDocument.allGraphics.length;myCounter++){
var myGraphic = myDocument.allGraphics[myCounter];
if(myGraphic.itemLink.status != LinkStatus.normal){
myGraphicsCheck = false;
}
}
return myGraphicsCheck;
}
}, true
);
}
» 1
[6312]Re: JavascriptでEventListenerでbeforePrint | 投稿者:(z-) | 投稿日:2011/11/18(Fri) 15:53:25
...自己解決しました
アプリケーションのScriptsフォルダ内に「StartupScripts」フォルダを作成し、その中に置いておく事で正常動作しました。
HDD→ライブラリ→Application Support→Adobe→Startup Scripts CS3→Adobe InDesign 内に入れてました。。
 働いておわびします orz
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)