スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

段落に設定されている段落スタイルを別のスタイルに置換する

これも以前、DTP駆け込み寺に投稿したもの。
textStyleRangeは便利ですね。

//
//段落スタイルAを段落スタイルBに置換するスクリプト
//テキストフレームだけが対象の場合
//
docObj = app.activeDocument;
tfObj = docObj.textFrames;
//テキストフレームの個数分ループ
for(i = 0; i < tfObj.length; i++) {
//連続している段落の個数分ループ
for(j = 0; j < tfObj[i].textStyleRanges.length; j++) {
//連続している段落の段落スタイルが"A"の場合の処理
if(tfObj[i].textStyleRanges[j].appliedParagraphStyle.name == "A")
tfObj[i].textStyleRanges[j].applyStyle(docObj.paragraphStyles.item("B") );
}
}

//
//段落スタイルAを段落スタイルBに置換するスクリプト
//ストーリーが対象の場合
//
docObj = app.activeDocument;
stObj = docObj.stories;
//ストーリーの個数分ループ
for(i = 0; i < stObj.length; i++) {
//連続している段落の個数分ループ
for(j = 0; j < stObj[i].textStyleRanges.length; j++) {
//連続している段落の段落スタイルが"A"の場合の処理
if(stObj[i].textStyleRanges[j].appliedParagraphStyle.name == "A")
stObj[i].textStyleRanges[j].applyStyle(docObj.paragraphStyles.item("B") );
}
}

このスクリプトはWindows版Indesign CS2で動作確認しています。
スポンサーサイト

上付き文字に特定のスタイルを適用する

以前、DTP駆け込み寺に投稿したスクリプトです。上付き文字に特定のスタイルsupを適用するスクリプトです。

docObj = app.activeDocument;
//テキストフレームの個数分ループ
for(i = 0; i < docObj.textFrames.length; i++) {
tfObj = docObj.textFrames[i];
//テキストフレーム内の文字数分ループ
for(j= 0; j < tfObj.characters.length; j++) {
//その文字が上付き文字の場合の処理
if(tfObj.characters[j].position == Position.superscript)
tfObj.characters[j].applyStyle(docObj.characterStyles.item("sup"));
}
}

このスクリプトはWindows版Indesign CS2で動作確認しています。

【CS3】pdf貼り込みでトラブル発生【解決編】

2008年01月28日で未解決の「四角形rectangleオブジェクトにpdfファイルを貼り込んでも、pdfAttribute.pageNumberが未定義になってしまう件」が解決しました。

CS2では

myPdfObj = myRectangle.place(pdfファイルのパス);

で動作しましたが、CS3では

myPdfObj = myRectangle.place(pdfファイルのパス)[0];

というように、最後に[0]を入れないとうまく動作しないようです。

出典はUSサイトのAdobeForumです。
ここに、PDF貼り込みに関する質問があって(この人はVisualBasicやC#だったけど)、
アドビのサンプルプログラムの中の"PlaceMultipagePDF.jsx"というスクリプトを参考にせよという回答がありました。早速ダウンロードして、そのスクリプトの90行目に

myPDFPage = myPage.place(File(myPDFFile), [0,0])[0];

という記述を発見しました。この場合、pageオブジェクトだったので、それをrectangleオブジェクトに書き換えてやってみたら見事動作しました。

ところでこの[0]って何でしょうねぇ。また疑問がわきました。

【CS3】pdf貼り込みでトラブル発生【今んとこ未解決】

Indesignで面付けすることが多いので、JavaScriptで四角形rectangleオブジェクトにpdfファイルを貼り込むといったようなことをよくやる。

【例】
myPdfObj = myRectangle.place(pdfファイルのパス);

CS2ではmyPdfObjにpdfオブジェクトが代入されていたので、pdfAttribute.pageNumberで何ページ目を貼り込んだかを調べることができた。
(なぜこんなことを調べるのかはここの「クリエイター手抜きプロジェクト 78」を参照のこと)

これをCS3で同じことをすると一見pdfオブジェクトが代入されるように見える(alert(myPdfObj );とするとCS2同様、[Object PDF]が返ってくる)が、実際にmyPdfObjを使って何かやろうとすると未定義エラーになってしまうのだ。

javascriptの仕様書をひもとくと、CS2ではrectangle.placeの戻り値は貼られたオブジェクト―今回の場合はPDF―になる。
しかしCS3では戻り値がarray of anyになっている。
まだ解決できていないがこの辺にヒントがあるようだ。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。