<

![endif]-->

いっちゃんのブログ(仮)
fc2ブログ

多面付けの台紙を作るスクリプト

Indesignで多面付けの台紙を作るスクリプトを作ってみました。
ダイアログで貼り込む対象のサイズ、ドブの幅、縦横の面数を指定すると、多面付けの台紙が簡単にできます。トンボは書きトンボで断ち、センター、コーナーが発生します。

CSにはjsファイル、CS2以上はjsxファイルを使用して下さい。

インストールの方法は過去の記事を参照して下さい。

アーカイブは↓にありますので、ブラウザにコピペしてダウンロードしてください。
Mac版(使用アーカイバ:clean Archiver)
http://itchang.web.fc2.com/adobeScripts/daishi.zip
Windows版(使用アーカイバ:+Lhaca)
http://itchang.web.fc2.com/adobeScripts/daishi.lzh

多面付け用のトンボ付の配置画像を指定したサイズでクリップするスクリプト

当方だけかもしれませんが、Indesignで多面付けデータを作ったりすることがあるので、トンボの付いた画像を指定したサイズでクリップするスクリプトを作ってみました。

使い方
1.作業用ドキュメントを新規作成する。
2.トンボ付画像を配置で貼り込む。
3.画像の中央トンボにガイドを引き、その交点が(0, 0)になるようにルーラーを移動する。
4.画像を選択してスクリプトを実行し、ダイアログでサイズをセットした後OKを押す。
5.画像が指定したサイズでクリップされる。
6.多面付けのデータにその画像をコピペする。

CSにはjsファイル、CS2以上はjsxファイルを使用して下さい。

インストールの方法は過去の記事を参照して下さい。

アーカイブは↓にありますので、ブラウザにコピペしてダウンロードしてください。
Mac版(使用アーカイバ:clean Archiver)
http://itchang.web.fc2.com/adobeScripts/pictClip.zip
Windows版(使用アーカイバ:+Lhaca)
http://itchang.web.fc2.com/adobeScripts/pictClip.lzh

ルビ入力を行うスクリプト

ルビ入力をIndesignのダイアログで行うスクリプトを書いてみた。
しかしルビを一度振るごとにスクリプトが終了してしまうので面白くない。
VBか何かで書けばいいのだろうか。
//
// ルビ入力支援スクリプト
//
// 【使い方】
// 親文字を選択し、このスクリプトを実行。ルビを入力しOKボタンを押す。
//
// 注1:ルビ入力をせずにOKを押すとルビは解除される。
// 注2:ルビを親文字ごとに空白で区切って入力すると、モノルビになる。
// 注3:親文字の字数とルビ入力の空白で区切られ文字の数が一致しない場合はグループルビになる。
// 注4:ルビを空白で全く区切らずに入力すると、グループルビになる。
//

// ドキュメントが開いているか?
if(app.documents.length != 0) {
var mySel = app.activeDocument.selection;
// 文字が選択されているか?
if( (mySel.length == 1) && (mySel[0].constructor.name == "Character") ||
(mySel[0].constructor.name == "Text") || (mySel[0].constructor.name == "Word") ) {
var oyamoji = mySel[0].contents;
// ダイアログの生成
var myDialog = app.dialogs.add( {name:"ルビ入力支援"} );
with(myDialog) {
with(dialogColumns.add() ){
with(dialogRows.add() ){
staticTexts.add({staticLabel:"親文字:" + oyamoji});
}
with(dialogRows.add() ){
staticTexts.add({staticLabel:"ルビ:"});
var rubyTBox = textEditboxes.add({minWidth:200 });
}
}
}
// ダイアログ表示
var myReturn = myDialog.show();
// OKが押されたか?
if (myReturn == true) {
var tmpFlag = true;
var rubyText = rubyTBox.editContents;
// ルビ入力がなければフラグはfalse
if(rubyText.lengh == 0) tmpFlag = false;
// 入力したルビに空白文字がなければフラグはfalse
if(rubyText.match(/ | /g) == null) tmpFlag = false;
// フラグがtrueならば空白で区切られたルビの数をカウント
if(tmpFlag == true) delimitCnt = rubyText.match(/ | /g).length;
// フラグがtrueで、親文字の字数と空白で区切られたルビの数が一致していればモノルビ
if( (tmpFlag == true) && (mySel[0].characters.length == delimitCnt + 1) ) {
// 空白区切りを全角に変換
rubyText = rubyText.replace(/ /g, " ");
// 全角空白で切り出す
rubyText = rubyText.split(" ");
// モノルビで親文字一字ごとにルビを付加
for(i=0; i < mySel[0].characters.length; i++) {
mySel[0].characters[i].rubyFlag = true;
mySel[0].characters[i].rubyType = 1249013859;
mySel[0].characters[i].rubyString = rubyText[i];
}
} else {
// ルビ入力の空白を削除
rubyText = rubyText.replace(/ | /g, "");
// グループルビでルビを付加
mySel[0].rubyFlag = true;
mySel[0].rubyType = 1249011570;
mySel[0].rubyString = rubyText;
}
}
// ダイアログを消去
myDialog.destroy();
} else alert("親文字を選択して下さい。");
} else alert("ドキュメントを開き、親文字を選択して下さい。");

テーマ : ブログ - ジャンル : ブログ

PDFファイルを中綴じで面付するスクリプト(2UPバージョン)

PDFファイルを読み込んで中綴じの状態で面付するスクリプトです。
出力は2UPで、A5, B5, A4サイズで64ページまでできます。
ただしクリープ等はできません。
CSからCS3まで動作すると思います。

// 中綴じ面付プログラム Ver.0.01
// 概要:PDFファイルをダイアログで指定したフォーマットで
//   中綴じ面付けを行う
// 動作確認環境: IndesignCS For Windows, Windows XP Home Edition
//

const A4VW = 210, A4VH = 297, B5VW = 182, B5VH = 257, BLEED = 3;
const A5VW = 148, A5VH = 210
var TotalPage, DocumentWidth, DocumentHeight;
var myDDpageStyle = new Array("A4", "B5", "A5");
var myDocumentBinding;
var myDocumentSize;
var myDocumentDirection;

var FilePath; //PDFファイルの絶対パス
var bleedStatus; //裁ち落としの有無

// デフォルトフォントの設定
app.textDefaults.appliedFont = app.fonts.item("ヒラギノ明朝 Pro W3");

//ページ数のドロップダウンアイテム作成
var myDDTotalPage = new Array();
for(i = 0; i < 16; i++) {
myDDTotalPage[i] = (i + 1) * 4 + "";
}

//Dialogメニューを表示
myDisplayDialog();

function myDisplayDialog() {
var myDialog = app.dialogs.add( {name:"PDF中綴じ/2P出力スクリプト"} );
with(myDialog.dialogColumns.add() ){
with(borderPanels.add()){
staticTexts.add({staticLabel:"用紙設定"});
// 用紙サイズのドロップダウンメニュー作成
var myDropDown2 = dropdowns.add({stringList:myDDpageStyle, selectedIndex:0});
//用紙縦・横選択ラジオボタン作成
with(myRadioBotton = radiobuttonGroups.add()) {
radiobuttonControls.add({staticLabel:"縦 ", checkedState:true});
radiobuttonControls.add({staticLabel:"横"});
}
//裁ち落とし有無のチェックボックス作成
myCheckBox = checkboxControls.add({staticLabel:"塗り足し有", checkedState:false});
}
with(borderPanels.add()){
staticTexts.add({staticLabel:"ページ数 "});
// ページ数設定ドロップダウンメニューの作成
var myDropDown = dropdowns.add( {stringList:myDDTotalPage, selectedIndex:0} );
//綴じ方向選択ラジオボタン作成
staticTexts.add({staticLabel:" 綴じ方向"});
with(myRadioBotton2 = radiobuttonGroups.add()) {
radiobuttonControls.add({staticLabel:"左(横書き)", checkedState:true});
radiobuttonControls.add({staticLabel:"右(縦書き)"});
}
}
}
// Dialogメニュー表示後のアクション
var myReturn = myDialog.show();
// OKを押された時
if (myReturn == true) {
myDocumentSize = myDropDown2.selectedIndex; // 用紙の大きさ
myDocumentDirection = myRadioBotton.selectedButton; // 用紙の方向
myDocumentBinding = myRadioBotton2.selectedButton; // 綴じ方向
// A4縦
if ( (myDocumentSize == 0) && (myDocumentDirection == 0) ) {
DocumentWidth = A4VW;
DocumentHeight = A4VH;
// A4横
} else if ( (myDocumentSize == 0) && (myDocumentDirection == 1) ) {
DocumentWidth = A4VH;
DocumentHeight = A4VW;
// B5縦
} else if ( (myDocumentSize == 1) && (myDocumentDirection == 0) ) {
DocumentWidth = B5VW;
DocumentHeight = B5VH;
// B5横
} else if ( (myDocumentSize == 1) && (myDocumentDirection == 1) ) {
DocumentWidth = B5VH;
DocumentHeight = B5VW;
// A5縦
} else if ( (myDocumentSize == 2) && (myDocumentDirection == 0) ) {
DocumentWidth = A5VW;
DocumentHeight = A5VH;
// A5横
} else if ( (myDocumentSize == 2) && (myDocumentDirection == 1) ) {
DocumentWidth = A5VH;
DocumentHeight = A5VW;
}
bleedStatus = myCheckBox.checkedState;
TotalPage = myDDTotalPage[myDropDown.selectedIndex];
myDialog.destroy();
//PDFファイル選択ダイアログを表示
fileRef = File.openDialog("PDFファイルを選択してください", "PDFファイル:*.pdf" );
//面付メインルーチンを実行する
impositionMain();
} else {
//ダイアログ破棄
myDialog.destroy();
}
}

// 面付けのメインプログラム
function impositionMain() {
var myDocument = app.documents.add();
//面付けのため横2倍サイズのアートボードを作成
with (myDocument.documentPreferences) {
pageWidth = DocumentWidth * 2;
pageHeight = DocumentHeight;
facingPages = false; //単ページ表示(見開きではない)
pagesPerDocument = TotalPage / 2;
pageBinding = PageBindingOptions.leftToRight;
pageOrientation = PageOrientation.landscape;
}
//マスターの全マージンを0mmに設定
with (document.masterSpreads.item(0).pages.item(0)) {
editUnits = MeasurementUnits.millimeters;
with (marginPreferences) {
right = 0;
left = 0;
top = 0;
bottom = 0;
}
}

//レイアウトグリッド非表示
myDocument.cjkGridPreferences.showAllLayoutGrids = false;

//ガイドライン作成
verticalGuidelineBound = new Array(DocumentWidth / 2, DocumentWidth, DocumentWidth * 1.5);
//横に1本
myGuide = myDocument.masterSpreads.item(0).guides.add();
myGuide.orientation = HorizontalOrVertical.horizontal;
myGuide.location = DocumentHeight / 2;
myGuide.fitToPage = true;
//縦に3本
for(i = 0; i < verticalGuidelineBound.length; i ++) {
myGuide = myDocument.masterSpreads.item(0).guides.add();
myGuide.orientation = HorizontalOrVertical.vertical;
myGuide.location = verticalGuidelineBound[i];
myGuide.fitToPage = true;
}
//全ページにデフォルトのマスタースプレッドを適用する
for (i = 0; i < myDocument.documentPreferences.pagesPerDocument; i++) {
myDocument.pages.item(i).appliedMaster = myDocument.masterSpreads.item("A-マスター");
}
//面付けページ番号テーブル生成
var ImpPageTable = new Array();
//左綴じ(横書き)の場合の処理
if (myDocumentBinding == 0) {
for(i = 0; i < TotalPage; i++) {
if( (i % 4 == 0) || ((i + 1) % 4 == 0) )
ImpPageTable[i] = TotalPage - (i >>> 1);
else if( (i % 2 == 0) || ((i + 1) % 2 == 0) )
ImpPageTable[i] = (i >>> 1) + 1;
}
//右綴じ(縦書き)の場合の処理
} else {
for(i = 0; i < TotalPage; i++) {
if( (i % 4 == 0) || ((i + 1) % 4 == 0) )
ImpPageTable[i] = (i >>> 1) + 1;
else if( (i % 2 == 0) || ((i + 1) % 2 == 0) )
ImpPageTable[i] = TotalPage - (i >>> 1);
}
}
//PDFはメディアサイズで貼込む
app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia;
//InDesignでのPDFファイル貼り込み方法
//テキストフレームを作成して、それにPDFファイル名を指定する
for (i = 0; i < TotalPage; i++) {
//貼込むPDFファイルのページ数を設定
app.pdfPlacePreferences.pageNumber = ImpPageTable[i];
//画像貼り込み用のテキストフレームを作成
myTextFrame = myDocument.pages.item(Math.floor(i / 2) ).textFrames.add();
//テキストフレームの線・塗りの色は無し
myTextFrame.strokeColor = myDocument.swatches.item(0, 0, 0, 0);
myTextFrame.fillColor = myDocument.swatches.item(0, 0, 0, 0);
myTextFrame.contentType = ContentType.graphicType;
//テキストフレームの位置を指定
if (i % 2 == 0) {
//左側
if(bleedStatus == true) { //裁ち落とし有
myTextFrame.geometricBounds = [-BLEED, -BLEED, DocumentHeight + BLEED, DocumentWidth];
//テキストフレームに画像ファイル名を指定する
if( (isNaN(app.version) ) && (parseInt(app.version) >= 5) )
myTextFrame.place(fileRef)[0]; // CS3以上
else
myTextFrame.place(fileRef); // CS, CS2
} else { //裁ち落とし無
myTextFrame.geometricBounds = [0, 0, DocumentHeight, DocumentWidth];
if( (isNaN(app.version) ) && (parseInt(app.version) >= 5) )
myTextFrame.place(fileRef)[0]; // CS3以上
else
myTextFrame.place(fileRef); // CS, CS2
} myTextFrame.geometricBounds = [-BLEED, -BLEED, DocumentHeight + BLEED, DocumentWidth];
} else {
//右側
if(bleedStatus == true) { //裁ち落とし有
myTextFrame.geometricBounds = [-BLEED, DocumentWidth - BLEED, DocumentHeight + BLEED, DocumentWidth * 2 + BLEED];
//テキストフレームに画像ファイル名を指定する
if( (isNaN(app.version) ) && (parseInt(app.version) >= 5) )
myTextFrame.place(fileRef)[0]; // CS3以上
else
myTextFrame.place(fileRef); // CS, CS2
myTextFrame.geometricBounds = [-BLEED, DocumentWidth, DocumentHeight + BLEED, DocumentWidth * 2 + BLEED];
} else { //裁ち落とし無
myTextFrame.geometricBounds = [0, DocumentWidth, DocumentHeight, DocumentWidth * 2];
//テキストフレームに画像ファイル名を指定する
if( (isNaN(app.version) ) && (parseInt(app.version) >= 5) )
myTextFrame.place(fileRef)[0]; // CS3以上
else
myTextFrame.place(fileRef); // CS, CS2
myTextFrame.geometricBounds = [-BLEED, DocumentWidth, DocumentHeight + BLEED, DocumentWidth * 2 + BLEED];
}
}
}
// 1ページ目に戻す
app.activeWindow.activePage = myDocument.pages[0];
}