InDesign Hacking with JavaScript
Adobe 社の DTP ソフトウェア「InDesign」 (Amazon) は、JavaScript (および MacOS 版では AppleScript、Windows 版では VBScript) を使って内部オブジェクトにアクセスできるようになっており、手動では面倒な作業を自動化することができます。
バージョン CS2 以降では XML 処理の機能も向上しており、ますますの自動化を期待できます。
このページでは、kmuto が作成したスクリプトを公開しています。ファイルをアプリケーションの指定のフォルダに置くことで、Windows/MacOS の両方で動作します。
- CS2: アプリケーションのPresets\Scriptsフォルダに配置します。
- CS3 Windows版: ユーザのApplication Data\Adobe\InDesign\Version 5.0-J\Scripts\Scripts Panelフォルダにhwj-Scriptsというフォルダを作成し、配置します。
- CS3 MacOS版: ユーザのLibrary/Preferences/Adobe InDesign/Version 5.0-J/Scripts/Scripts Panelフォルダにhwj-Scriptsというフォルダを作成し、配置します。
- CS4 MacOS版: ユーザのLibrary/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/Scripts/Scripts Panelフォルダにhwj-Scriptsというフォルダを作成し、配置します。
- CS5.5 MacOS版: ユーザのLibrary/Preferences/Adobe InDesign/Version 7.5-J/ja_JP/Scripts/Scripts Panelフォルダにhwj-Scriptsというフォルダを作成し、配置します。
- CS6 MacOS版: ユーザのLibrary/Preferences/Adobe InDesign/Version 8.0-J/ja_JP/Scripts/Scripts Panelフォルダにhwj-Scriptsというフォルダを作成し、配置します。
各スクリプトの API ガイドは、こちらにあります。
XML ドキュメントからの組版主眼ですが、スクリプト自体は段落スタイルなどを使ったものもあり、通常のテキスト組版でも応用は可能です。
- lib で始まる名前のファイルは、関数のみを収録しており、利用するには別途スクリプトコードが必要です。
- dialog で始まる名前のファイルは、ダイアログベースのスクリプトです。
- silent で始まる名前のファイルは、ダイアログを何も表示せずに実行するスクリプトです。
- book で始まる名前のファイルは、特定書籍向けのスクリプトです。
スクリプトは、アプリケーションの Presets/Scripts フォルダに配置してください (自動化ウィンドウ内にスクリプトファイル名が表示されます)。
- 概要
- (なし)
(APIガイド)
- ライセンス
- その他のライセンス (ファイル先頭を参照してください)
- 関数
- 概要
- XML要素の画像にオブジェクトスタイルを適用する。ostyle属性が付いているときにはその値のオブジェクトスタイル名を使う
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- applyImageObjectstyle
- 概要
- ローマ数字とアラビア数字を変換する
(APIガイド)
- ライセンス
- その他のライセンス (ファイル先頭を参照してください)
- 関数
- arabic2roman, roman2arabic
- 概要
- 指定領域の背景に画像を入れる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- backGroundImage
- 概要
- 指定領域の背景に画像を入れる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- backGroundImage3
- 概要
- 行送り記号の挿入
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- lineBreakOfStory, lineBreak, getLastX
- 概要
- 必須マスターページ以外のページ要素をすべて消去し、右ページから始まる2ページの白ページと連結フレームを配置する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- silentClearDocument
- 概要
- 指定のXML要素を子要素を含めてインラインテキストフレーム化する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- makeCodeBlock1, makeCodeBlock2, processXMLforCodeBlock
- 概要
- InDesign共通ライブラリ
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- getCSVersion, getCSPath, callScripts, getFilePath, toMmMode, revertMmMode, startBenchMark, endBenchMark, insertItemMark, insertPrefix, setCharacterStyle, getCharacterStyleByName, getAllCharacterStyles, getAllCharacterStylesFromGroup, getCharacterStyleByNameFromGroup, getParagraphStyleByName, getParagraphStyleByNameFromGroup, getObjectStyleByName, getObjectStyleByNameFromGroup, getTableStyleByName, getTableStyleByNameFromGroup, getCellStyleByName, getCellStyleByNameFromGroup, getCharacterStyles, getParagraphStyles, getObjectStyles, getTableStyles, getCellStyles, findContentFromPageByStyles, findContentFromObjectByStyles, findStringFromObjectWithGroup, findStringFromObject, findMasterSpread, removeGroupObjectByLabel, locateObject, getEndStoryPoint, getEndStoryPoint2, getMetaInfo, pttomm, showInteraction
- 概要
- 見出しdtpインストラクションの箇所にブックマークを入れる。目次中ノンブルなどの指定要素にハイパーリンクを付ける
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- clearBookmarks, processXMLforBookmarks, processXMLforHyperlinks, processHyperlinks, addHyperlink, loadDaiwariPageFile
- 概要
- 行頭が指定の空行スタイルで始まっている場合、前ページのテキストフレームを下に広げる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- extendTextFrame
- 概要
- 脚注記号を任意のものに変更する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- replaceFootnoteMark, revertFootnoteMark
- 概要
- 版面の縦横座標を返す
(APIガイド)
- ライセンス
- その他のライセンス (ファイル先頭を参照してください)
- 関数
- getBoundsOfPage
- 概要
- テキストフレームとページ、ページオフセットとノンブルのマッピング配列を返す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- getFrameIdFromPage, getPagenumFromSection
- 概要
- テキストフレームからあふれているときに、マスターページを適用したページを追加する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- treatOverflow
- 概要
- テキストフレームからあふれているときに、マスターページを適用したページを追加する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- treatOverflow
- 概要
- 指定の段落の前に画像を挿入する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- insertImageIcon1, insertImageIcon2
- 概要
- オブジェクトの下座標を特定段落スタイルの最後の行のベースラインを基準に伸縮させる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- modifyBoxBottom
- 概要
- 表の操作。XML情報のcolspan、rowspanに基づいて接続したり、左右のケイを取ったりする
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- modifyTable
- 概要
- ページにマルチカラム対応のテキストフレームを配置する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- placeTextFrames
- 概要
- XMLインストラクションを使い、節飾りのようなグループを貼り付ける
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforDecoratedPanel, processDecoratedPanel, placeDecoratedPanel
- 概要
- XMLインストラクションを使い、左右の柱を生成して適用する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- makeMasterPage, processXMLforHashira
- 概要
- XMLインストラクションを使い、左右の柱を生成して適用する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- makeMasterPage2, processXMLforHashira2
- 概要
- XMLインストラクションを使い、左右の柱を生成して適用する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- makeMasterPage2, processXMLforHashira3
- 概要
- XML要素を探してその内容をオブジェクトテンプレートにコピーし、配置する。テキストフレームを下にずらす
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforHeaderImage
- 概要
- 指定のXML要素の位置に、オブジェクトをコピーペーストし、必要に応じてプレースホルダ文字を置き換える
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLForPlaceGroup, processForPlaceGroup, placeGroup
- 概要
- XML要素の範囲の背景に画像を配置する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforBackgroundImage, processXMLforBackgroundImage2
- 概要
- XML要素の範囲の背景に画像を配置する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforBackgroundImage2
- 概要
- XML要素の範囲の背景に画像を配置する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforBackgroundImage3, createBGProgressBar, processBackgroundImage, processCountTargetImage
- 概要
- 指定のXML要素の内容を吹き出しとしてテキストフレーム化し、線を引く
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforBalloon, redrawProcessXMLforBalloon
- 概要
- XPathにマッチする要素がページをまたいでいる場合、右下/左上にアイコンを置く
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforNextToIcon, ProcessNextToIconSubset, placeNextToIcon, placeNextToText
- 概要
- XMLの指定要素のテキストを表にする。表にするとXMLの情報は失われる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforConvertToTable
- 概要
- width属性、height属性の値(mm)に従って指定要素内にあるオブジェクトの幅を変える
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforExtendObj, processExtendObj, extendObj
- 概要
- XMLのリスト構造をベースに番号を付け直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforRenumbering, processXMLforRenumbering2
- 概要
- XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforSpecialCharacters
- 概要
- XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する(CS4-)
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforSpecialCharacters2
- 概要
- XMLインストラクションを使い、目次テキストを出力する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- getTOC, processXMLforTOC
- 概要
- XPathにマッチする要素を切り出してテキストフレーム化する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- MakeBlock, ProcessSubset, ProcessPlaceBlock
- 概要
- 特定記号に囲まれた数字を丸数字、黒丸数字などに置き換える
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- roundNumbers, getCID
- 概要
- 指定のXML要素を子要素を含めてコメントをテキストフレーム化し、線を引く
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforComment, redrawProcessXMLforComment, redrawProcessXMLforCommentLine
- 概要
- 左右ページのツメ見出しを指定のマスタページに設定する。各見出しは適当なオブジェクトとしてラベルを定義しておく。Y座標はそのまま使われる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- putSideMarker
- 概要
- 指定のXML要素を子要素を含めて側注テキストフレーム化する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforSidenote2, processSideNote, moveFootnoteToSide, redrawProcessXMLforSidenote2, processRedrawSideNote, placeSideNote, handleOverwrapSidenotes
- 概要
- 指定のXML要素を子要素を含めて側注テキストフレーム化する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforSidenote, redrawProcessXMLforSidenote, handleOverwrapSidenotes
- 概要
- 章扉を作成する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- doTobiraHandle, processTobiraObject, processXMLforSection, makeTobira
- 概要
- 行送り記号の挿入
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- lineBreakOfStory, lineBreak, getLastX, toMmMode, revertMmMode
- 概要
- 必須マスターページ以外のページ要素をすべて消去し、右ページから始まる2ページの白ページと連結フレームを配置する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- 概要
- GroupRubyタグの箇所を正しくグループルビにする
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforGroupRuby, processGroupRuby
- 概要
- dialogMakeCodeBlock-stage1.jsxなどで作成したデータベースを基に、テキストフレームをインラインテキストフレームに移動する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- 概要
- <footnote>タグの内容を脚注とする。内容は1行であることを前提とし、文字スタイルは保持されるがそれ以外のXML情報およびスタイルは失われる。脚注の詳細オプションは、InDesign側の書式→脚注オプションで行う。注と監訳者注のように複数の注釈を行うことはできない
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforFootnote
- 概要
- footnoteタグを削除する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforRemoveFootnote, ProcessRemoveFootnote
- 概要
- XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- 概要
- XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する(glue code版)
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- processXMLforSpecialCharacters, processSpecialCharacters, insertSpecialCharacters
- 概要
- (なし)
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- 概要
- (なし)
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- 概要
- (なし)
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- setRuby
- 概要
- (なし)
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- plusTen
Photoshop CS3 以降向けのスクリプトもいくつか作成しています。
- 概要
- フォルダを選択し、中のビットマップ画像をリサイズおよびグレースケール化したEPSとして出力する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- convertToGrayEPS
Illustrator CS3 以降向けのスクリプトもいくつか作成しています。
実行はメニューの「ファイル」→「スクリプト」→「その他のスクリプト」で選択するか、MacOSの場合は Finder で「アプリケーション」→「Adobe Illustrator CS*」→「プリセット」→「ja_JP」(CS4以降の場合)→「スクリプト」の中に配置して Illustrator を再起動することで利用できます。サブフォルダを作成して、ものかのさんの ScriptPalette AI を利用するのが便利でしょう。日本語でメニューに表示したいときには、エイリアスで日本語ファイル名を作るとよいでしょう。
- 概要
- フォルダを選択し、中のEPS画像をCMYK→グレースケール化して保存し直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- saveAsGrayEPS
- 概要
-
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- borderBox
- 概要
- テンプレートファイルを開いている状態で、保存先フォルダとマップファイルを選択し、テンプレートの文字列を置換して保存する。マップファイルは最初の行に「FILE タブ 1つめのプレイスホルダ 2つめのプレイスホルダ ...」と記述し、以降の行で「出力ファイル名 1つめプレイスホルダへの値 2つめプレイスホルダへの値 ...」と書いていく
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- replaceDocument
- 概要
- フォルダを選択し、EPS/AIファイルを古いバージョンに保存し直す(使用バージョンでオープン可能であることが前提)
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- downGrade
- 概要
- アプリケーションフォント一覧をファイルに出力する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- dump
- 概要
- フォルダを選択し、EPS/AIファイルをSVG形式で保存し直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- getCSVersion, saveAsAI
- 概要
- フォルダを選択し、EPS/AIファイルをPDF形式で保存し直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- saveAsPDF
- 概要
- フォルダを選択し、EPS/AIファイルを最低300dpiにしてから、アートボードをオブジェクトサイズにフィットさせ、PDF形式で保存し直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- saveAsPDF
- 概要
- フォルダを選択し、EPS/AIファイルをPNG形式で保存し直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- saveAsPNG
- 概要
- フォルダを選択し、EPS/AIファイルをSVG形式で保存し直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- getCSVersion, saveAsSVG
- 概要
- フォルダの画像のフォント一覧レポートを生成する
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- saveAndRead
- 概要
-
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- replaceFont
- 概要
-
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- saveAsEPS
- 概要
- エラーレポートファイルまたはフォルダを指定して画像ファイルを並べた1枚のファイルを作成する。望むならPDFとして保存できる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- mmtopt, createPage, loadFromReport, loadFromDir, findImages
- 概要
- フォルダを選択し、古い形式/CIDフォントのEPS/AIファイルをEPS形式で保存し直す
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- replaceFont
- 概要
- フォルダを選択し、AIまたはEPSのファイルを指定幅リサイズおよびDPIセットする。ファイルは上書きされる
(APIガイド)
- ライセンス
- 使用許諾 に準じる
- 関数
- resizeAI, unLockItems, lockItems, unLockLayers, lockLayers, resizeDoc, setResolution
このページに掲載している各スクリプトは、特に注記がない限りは次のソフトウェア使用許諾同意書に記載した条項にて利用・配布できます。[テキスト形式 (UTF8), テキスト形式 (シフトJIS)]
ソフトウェア使用許諾同意書
本ソフトウェアの利用・変更・再配布にあたっては、下記の使用許諾同意書に
同意する必要があります。
- 本使用許諾同意書における「ソフトウェア」とは、機械可読の資料 (ライブラリ、スクリプト、ソースファイル、データファイル)、実行形式、および文書を意味します。
- 本ソフトウェアの使用許諾同意書に同意する限りにおいて、使用者は本ソフトウェアを自由に利用、変更することができます。
- 本ソフトウェアに変更を加えない限りにおいて、使用者は本ソフトウェアを自由にコピー、再配布することができます。
- 本ソフトウェアは無保証です。作者およびそれに関連する組織、配布者は、本ソフトウェアの使用に起因する一切の直接損害、間接損害、偶発的損害、特別損害、懲戒的損害、派生的損害について何らの責任・保証も負いません。
- 本ソフトウェアを変更した上で再配布するときには、下記の事項すべてに従わなければなりません。
- 使用許諾同意書の内容に変更を加えてはなりません。技術上の理由で文字エンコーディングの変換を行うことは許可しますが、その使用者が特殊な技術的措置なしに可読な形でなければなりません。
- 技術上の理由でバイナリ化・難読化を行う場合も、変更箇所を含めたソフトウェアを、その使用者が可読可能な形式の形で同一のメディアで提供しなければなりません。本使用許諾同意書の2条および3条により、使用者が可読形式の該当ソフトウェアを変更、コピー、再配布することを妨げてはなりません。
- ソフトウェア構成物の所定の作者名の欄に、変更者のクレジット(個人名、企業名、所属、連絡先など)を「追加」しなければなりません。
- 本ソフトウェアを変更した上で再配布するときには、変更理由およびその内容を明記することが推奨されます。
- 使用者がソフトウェアに適用可能な特許に対して特許侵害にかかわる何らかの行動を開始した時点で、この使用許諾同意書は自動的に終了し、以降使用者はこの使用許諾書によって与えられた一切の権利を放棄するものとします。
著作権所有者 Copyright (C) 2008-2013 Kenshi Muto. All rights reserved.
使用許諾同意書バージョン1.0
著作権所有者による書面での事前の許可がない限り、この使用許諾同意書に変更を加えてはなりません。
Copyright 2008-2013 Kenshi Muto