InDesign Hacking with JavaScript

Adobe 社の DTP ソフトウェア「InDesign」 (Amazon) は、JavaScript (および MacOS 版では AppleScript、Windows 版では VBScript) を使って内部オブジェクトにアクセスできるようになっており、手動では面倒な作業を自動化することができます。

バージョン CS2 以降では XML 処理の機能も向上しており、ますますの自動化を期待できます。

このページでは、kmuto が作成したスクリプトを公開しています。ファイルをアプリケーションの指定のフォルダに置くことで、Windows/MacOS の両方で動作します。





株式会社トップスタジオは、kmuto の所属する編集プロダクション企業です。書籍やパンフレット、マニュアルなどの企画、翻訳、執筆、編集、監修、DTP、デザインなど手広い範囲で皆様のお役に立ちます。


スクリプト紹介

各スクリプトの API ガイドは、こちらにあります。

XML ドキュメントからの組版主眼ですが、スクリプト自体は段落スタイルなどを使ったものもあり、通常のテキスト組版でも応用は可能です。

スクリプトは、アプリケーションの Presets/Scripts フォルダに配置してください (自動化ウィンドウ内にスクリプトファイル名が表示されます)。

libs/glue code.jsx

概要
(なし) (APIガイド)
ライセンス
その他のライセンス (ファイル先頭を参照してください)
関数

libs/libApplyImageObjectstyle.jsx

概要
XML要素の画像にオブジェクトスタイルを適用する。ostyle属性が付いているときにはその値のオブジェクトスタイル名を使う (APIガイド)
ライセンス
使用許諾 に準じる
関数
applyImageObjectstyle

libs/libArabic2Roman.jsx

概要
ローマ数字とアラビア数字を変換する (APIガイド)
ライセンス
その他のライセンス (ファイル先頭を参照してください)
関数
arabic2roman, roman2arabic

libs/libBackGroundImage.jsx

概要
指定領域の背景に画像を入れる (APIガイド)
ライセンス
使用許諾 に準じる
関数
backGroundImage

libs/libBackGroundImage3.jsx

概要
指定領域の背景に画像を入れる (APIガイド)
ライセンス
使用許諾 に準じる
関数
backGroundImage3

libs/libBreakLine.jsx

概要
行送り記号の挿入 (APIガイド)
ライセンス
使用許諾 に準じる
関数
lineBreakOfStory, lineBreak, getLastX

libs/libClearDocument.jsx

概要
必須マスターページ以外のページ要素をすべて消去し、右ページから始まる2ページの白ページと連結フレームを配置する (APIガイド)
ライセンス
使用許諾 に準じる
関数
silentClearDocument

libs/libCodeBlock.jsx

概要
指定のXML要素を子要素を含めてインラインテキストフレーム化する (APIガイド)
ライセンス
使用許諾 に準じる
関数
makeCodeBlock1, makeCodeBlock2, processXMLforCodeBlock

libs/libCommon.jsx

概要
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

libs/libEmbedBookmarks.jsx

概要
見出しdtpインストラクションの箇所にブックマークを入れる。目次中ノンブルなどの指定要素にハイパーリンクを付ける (APIガイド)
ライセンス
使用許諾 に準じる
関数
clearBookmarks, processXMLforBookmarks, processXMLforHyperlinks, processHyperlinks, addHyperlink, loadDaiwariPageFile

libs/libExtendTextFrame.jsx

概要
行頭が指定の空行スタイルで始まっている場合、前ページのテキストフレームを下に広げる (APIガイド)
ライセンス
使用許諾 に準じる
関数
extendTextFrame

libs/libFootnoteMark.jsx

概要
脚注記号を任意のものに変更する (APIガイド)
ライセンス
使用許諾 に準じる
関数
replaceFootnoteMark, revertFootnoteMark

libs/libGetBoundsOfPage.jsx

概要
版面の縦横座標を返す (APIガイド)
ライセンス
その他のライセンス (ファイル先頭を参照してください)
関数
getBoundsOfPage

libs/libGetFrameIDs.jsx

概要
テキストフレームとページ、ページオフセットとノンブルのマッピング配列を返す (APIガイド)
ライセンス
使用許諾 に準じる
関数
getFrameIdFromPage, getPagenumFromSection

libs/libHandleOverflow.jsx

概要
テキストフレームからあふれているときに、マスターページを適用したページを追加する (APIガイド)
ライセンス
使用許諾 に準じる
関数
treatOverflow

libs/libHandleOverflow2.jsx

概要
テキストフレームからあふれているときに、マスターページを適用したページを追加する (APIガイド)
ライセンス
使用許諾 に準じる
関数
treatOverflow

libs/libInsertImageIcon.jsx

概要
指定の段落の前に画像を挿入する (APIガイド)
ライセンス
使用許諾 に準じる
関数
insertImageIcon1, insertImageIcon2

libs/libModifyBoxBottom.jsx

概要
オブジェクトの下座標を特定段落スタイルの最後の行のベースラインを基準に伸縮させる (APIガイド)
ライセンス
使用許諾 に準じる
関数
modifyBoxBottom

libs/libModifyTable.jsx

概要
表の操作。XML情報のcolspan、rowspanに基づいて接続したり、左右のケイを取ったりする (APIガイド)
ライセンス
使用許諾 に準じる
関数
modifyTable

libs/libPlaceTextFrames.jsx

概要
ページにマルチカラム対応のテキストフレームを配置する (APIガイド)
ライセンス
使用許諾 に準じる
関数
placeTextFrames

libs/libProcessXMLForDecoratedPanel.jsx

概要
XMLインストラクションを使い、節飾りのようなグループを貼り付ける (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforDecoratedPanel, processDecoratedPanel, placeDecoratedPanel

libs/libProcessXMLForHashira.jsx

概要
XMLインストラクションを使い、左右の柱を生成して適用する (APIガイド)
ライセンス
使用許諾 に準じる
関数
makeMasterPage, processXMLforHashira

libs/libProcessXMLForHashira2.jsx

概要
XMLインストラクションを使い、左右の柱を生成して適用する (APIガイド)
ライセンス
使用許諾 に準じる
関数
makeMasterPage2, processXMLforHashira2

libs/libProcessXMLForHashira3.jsx

概要
XMLインストラクションを使い、左右の柱を生成して適用する (APIガイド)
ライセンス
使用許諾 に準じる
関数
makeMasterPage2, processXMLforHashira3

libs/libProcessXMLForHeader.jsx

概要
XML要素を探してその内容をオブジェクトテンプレートにコピーし、配置する。テキストフレームを下にずらす (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforHeaderImage

libs/libProcessXMLForPlaceGroup.jsx

概要
指定のXML要素の位置に、オブジェクトをコピーペーストし、必要に応じてプレースホルダ文字を置き換える (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLForPlaceGroup, processForPlaceGroup, placeGroup

libs/libProcessXMLforBackgroundImage.jsx

概要
XML要素の範囲の背景に画像を配置する (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforBackgroundImage, processXMLforBackgroundImage2

libs/libProcessXMLforBackgroundImage2.jsx

概要
XML要素の範囲の背景に画像を配置する (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforBackgroundImage2

libs/libProcessXMLforBackgroundImage3.jsx

概要
XML要素の範囲の背景に画像を配置する (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforBackgroundImage3, createBGProgressBar, processBackgroundImage, processCountTargetImage

libs/libProcessXMLforBalloon.jsx

概要
指定のXML要素の内容を吹き出しとしてテキストフレーム化し、線を引く (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforBalloon, redrawProcessXMLforBalloon

libs/libProcessXMLforContinuous.jsx

概要
XPathにマッチする要素がページをまたいでいる場合、右下/左上にアイコンを置く (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforNextToIcon, ProcessNextToIconSubset, placeNextToIcon, placeNextToText

libs/libProcessXMLforConvertToTable.jsx

概要
XMLの指定要素のテキストを表にする。表にするとXMLの情報は失われる (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforConvertToTable

libs/libProcessXMLforExtendObj.jsx

概要
width属性、height属性の値(mm)に従って指定要素内にあるオブジェクトの幅を変える (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforExtendObj, processExtendObj, extendObj

libs/libProcessXMLforRenumbering.jsx

概要
XMLのリスト構造をベースに番号を付け直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforRenumbering, processXMLforRenumbering2

libs/libProcessXMLforSpecialCharacters.jsx

概要
XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforSpecialCharacters

libs/libProcessXMLforSpecialCharacters2.jsx

概要
XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する(CS4-) (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforSpecialCharacters2

libs/libProcessXMLforTOC.jsx

概要
XMLインストラクションを使い、目次テキストを出力する (APIガイド)
ライセンス
使用許諾 に準じる
関数
getTOC, processXMLforTOC

libs/libProcessXMLmakeBlock.jsx

概要
XPathにマッチする要素を切り出してテキストフレーム化する (APIガイド)
ライセンス
使用許諾 に準じる
関数
MakeBlock, ProcessSubset, ProcessPlaceBlock

libs/libRoundNumbers.jsx

概要
特定記号に囲まれた数字を丸数字、黒丸数字などに置き換える (APIガイド)
ライセンス
使用許諾 に準じる
関数
roundNumbers, getCID

libs/libSideComment.jsx

概要
指定のXML要素を子要素を含めてコメントをテキストフレーム化し、線を引く (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforComment, redrawProcessXMLforComment, redrawProcessXMLforCommentLine

libs/libSideMarker.jsx

概要
左右ページのツメ見出しを指定のマスタページに設定する。各見出しは適当なオブジェクトとしてラベルを定義しておく。Y座標はそのまま使われる (APIガイド)
ライセンス
使用許諾 に準じる
関数
putSideMarker

libs/libSideNote2.jsx

概要
指定のXML要素を子要素を含めて側注テキストフレーム化する (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforSidenote2, processSideNote, moveFootnoteToSide, redrawProcessXMLforSidenote2, processRedrawSideNote, placeSideNote, handleOverwrapSidenotes

libs/libSidenote.jsx

概要
指定のXML要素を子要素を含めて側注テキストフレーム化する (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforSidenote, redrawProcessXMLforSidenote, handleOverwrapSidenotes

libs/libTobira.jsx

概要
章扉を作成する (APIガイド)
ライセンス
使用許諾 に準じる
関数
doTobiraHandle, processTobiraObject, processXMLforSection, makeTobira

silent/silentBreakLine.jsx

概要
行送り記号の挿入 (APIガイド)
ライセンス
使用許諾 に準じる
関数
lineBreakOfStory, lineBreak, getLastX, toMmMode, revertMmMode

silent/silentClearDocument.jsx

概要
必須マスターページ以外のページ要素をすべて消去し、右ページから始まる2ページの白ページと連結フレームを配置する (APIガイド)
ライセンス
使用許諾 に準じる
関数

silent/silentGroupRuby.jsx

概要
GroupRubyタグの箇所を正しくグループルビにする (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforGroupRuby, processGroupRuby

silent/silentMakeCodeBlock-stage2.jsx

概要
dialogMakeCodeBlock-stage1.jsxなどで作成したデータベースを基に、テキストフレームをインラインテキストフレームに移動する (APIガイド)
ライセンス
使用許諾 に準じる
関数

silent/silentMakeFootnote.jsx

概要
<footnote>タグの内容を脚注とする。内容は1行であることを前提とし、文字スタイルは保持されるがそれ以外のXML情報およびスタイルは失われる。脚注の詳細オプションは、InDesign側の書式→脚注オプションで行う。注と監訳者注のように複数の注釈を行うことはできない (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforFootnote

silent/silentRemoveFootnote.jsx

概要
footnoteタグを削除する (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforRemoveFootnote, ProcessRemoveFootnote

silent/silentSpecialCharacters.jsx

概要
XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する (APIガイド)
ライセンス
使用許諾 に準じる
関数

silent/silentSpecialCharacters2.jsx

概要
XMLインストラクションを使い、特殊文字(改行や改ページなど)を挿入する(glue code版) (APIガイド)
ライセンス
使用許諾 に準じる
関数
processXMLforSpecialCharacters, processSpecialCharacters, insertSpecialCharacters

trial/2nd-task1-vcenter.jsx

概要
(なし) (APIガイド)
ライセンス
使用許諾 に準じる
関数

trial/2nd-task2-locate.jsx

概要
(なし) (APIガイド)
ライセンス
使用許諾 に準じる
関数

trial/2nd-task3-ruby.jsx

概要
(なし) (APIガイド)
ライセンス
使用許諾 に準じる
関数
setRuby

trial/2nd-task4-plusten.jsx

概要
(なし) (APIガイド)
ライセンス
使用許諾 に準じる
関数
plusTen

Photoshop 用スクリプト

Photoshop CS3 以降向けのスクリプトもいくつか作成しています。

dialogGrayScale.jsx

概要
フォルダを選択し、中のビットマップ画像をリサイズおよびグレースケール化したEPSとして出力する (APIガイド)
ライセンス
使用許諾 に準じる
関数
convertToGrayEPS

Illustrator 用スクリプト

Illustrator CS3 以降向けのスクリプトもいくつか作成しています。

実行はメニューの「ファイル」→「スクリプト」→「その他のスクリプト」で選択するか、MacOSの場合は Finder で「アプリケーション」→「Adobe Illustrator CS*」→「プリセット」→「ja_JP」(CS4以降の場合)→「スクリプト」の中に配置して Illustrator を再起動することで利用できます。サブフォルダを作成して、ものかのさんの ScriptPalette AI を利用するのが便利でしょう。日本語でメニューに表示したいときには、エイリアスで日本語ファイル名を作るとよいでしょう。

CMYKgreySave.jsx

概要
フォルダを選択し、中のEPS画像をCMYK→グレースケール化して保存し直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
saveAsGrayEPS

box.jsx

概要
(APIガイド)
ライセンス
使用許諾 に準じる
関数
borderBox

dialogCloning.jsx

概要
テンプレートファイルを開いている状態で、保存先フォルダとマップファイルを選択し、テンプレートの文字列を置換して保存する。マップファイルは最初の行に「FILE タブ 1つめのプレイスホルダ 2つめのプレイスホルダ ...」と記述し、以降の行で「出力ファイル名 1つめプレイスホルダへの値 2つめプレイスホルダへの値 ...」と書いていく (APIガイド)
ライセンス
使用許諾 に準じる
関数
replaceDocument

downConvert.jsx

概要
フォルダを選択し、EPS/AIファイルを古いバージョンに保存し直す(使用バージョンでオープン可能であることが前提) (APIガイド)
ライセンス
使用許諾 に準じる
関数
downGrade

dumpFonts.jsx

概要
アプリケーションフォント一覧をファイルに出力する (APIガイド)
ライセンス
使用許諾 に準じる
関数
dump

eps2ai.jsx

概要
フォルダを選択し、EPS/AIファイルをSVG形式で保存し直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
getCSVersion, saveAsAI

eps2pdf.jsx

概要
フォルダを選択し、EPS/AIファイルをPDF形式で保存し直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
saveAsPDF

eps2pdfv2.jsx

概要
フォルダを選択し、EPS/AIファイルを最低300dpiにしてから、アートボードをオブジェクトサイズにフィットさせ、PDF形式で保存し直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
saveAsPDF

eps2png.jsx

概要
フォルダを選択し、EPS/AIファイルをPNG形式で保存し直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
saveAsPNG

eps2svg.jsx

概要
フォルダを選択し、EPS/AIファイルをSVG形式で保存し直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
getCSVersion, saveAsSVG

fontList.jsx

概要
フォルダの画像のフォント一覧レポートを生成する (APIガイド)
ライセンス
使用許諾 に準じる
関数
saveAndRead

fontreplace.jsx

概要
(APIガイド)
ライセンス
使用許諾 に準じる
関数
replaceFont

pdf2eps.jsx

概要
(APIガイド)
ライセンス
使用許諾 に準じる
関数
saveAsEPS

placeWarnFiles.jsx

概要
エラーレポートファイルまたはフォルダを指定して画像ファイルを並べた1枚のファイルを作成する。望むならPDFとして保存できる (APIガイド)
ライセンス
使用許諾 に準じる
関数
mmtopt, createPage, loadFromReport, loadFromDir, findImages

replaceFontAndSaveEPS.jsx

概要
フォルダを選択し、古い形式/CIDフォントのEPS/AIファイルをEPS形式で保存し直す (APIガイド)
ライセンス
使用許諾 に準じる
関数
replaceFont

resizeAIs.jsx

概要
フォルダを選択し、AIまたはEPSのファイルを指定幅リサイズおよびDPIセットする。ファイルは上書きされる (APIガイド)
ライセンス
使用許諾 に準じる
関数
resizeAI, unLockItems, lockItems, unLockLayers, lockLayers, resizeDoc, setResolution

使用許諾 (ライセンス)

このページに掲載している各スクリプトは、特に注記がない限りは次のソフトウェア使用許諾同意書に記載した条項にて利用・配布できます。[テキスト形式 (UTF8), テキスト形式 (シフトJIS)]

ソフトウェア使用許諾同意書

本ソフトウェアの利用・変更・再配布にあたっては、下記の使用許諾同意書に 同意する必要があります。

  1. 本使用許諾同意書における「ソフトウェア」とは、機械可読の資料 (ライブラリ、スクリプト、ソースファイル、データファイル)、実行形式、および文書を意味します。
  2. 本ソフトウェアの使用許諾同意書に同意する限りにおいて、使用者は本ソフトウェアを自由に利用、変更することができます。
  3. 本ソフトウェアに変更を加えない限りにおいて、使用者は本ソフトウェアを自由にコピー、再配布することができます。
  4. 本ソフトウェアは無保証です。作者およびそれに関連する組織、配布者は、本ソフトウェアの使用に起因する一切の直接損害、間接損害、偶発的損害、特別損害、懲戒的損害、派生的損害について何らの責任・保証も負いません。
  5. 本ソフトウェアを変更した上で再配布するときには、下記の事項すべてに従わなければなりません。
  6. 本ソフトウェアを変更した上で再配布するときには、変更理由およびその内容を明記することが推奨されます。
  7. 使用者がソフトウェアに適用可能な特許に対して特許侵害にかかわる何らかの行動を開始した時点で、この使用許諾同意書は自動的に終了し、以降使用者はこの使用許諾書によって与えられた一切の権利を放棄するものとします。

著作権所有者 Copyright (C) 2008-2013 Kenshi Muto. All rights reserved.
使用許諾同意書バージョン1.0

著作権所有者による書面での事前の許可がない限り、この使用許諾同意書に変更を加えてはなりません。


Copyright 2008-2013 Kenshi Muto