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/libCodeBlock.jsx

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

libs/libCommon.jsx

概要
InDesign共通ライブラリ (APIガイド)
ライセンス
使用許諾 に準じる
関数
getCSVersion, getCSPath, callScripts, getFilePath, toMmMode, revertMmMode, startBenchMark, endBenchMark, insertItemMark, insertPrefix, setCharacterStyle, getCharacterStyleByName, 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

libs/libExtendTextFrame.jsx

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

libs/libGetBoundsOfPage.jsx

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

libs/libGetFrameIDs.jsx

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

libs/libHandleOverflow.jsx

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

libs/libInsertImageIcon.jsx

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

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/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/libProcessXMLforRenumbering.jsx

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

libs/libProcessXMLforSpecialCharacters.jsx

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

libs/libProcessXMLforTOC.jsx

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

libs/libProcessXMLmakeBlock.jsx

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

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/silentMakeCodeBlock-stage2.jsx

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

silent/silentMakeFootnote.jsx

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

silent/silentSpecialCharacters.jsx

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

Photoshop 用スクリプト

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

dialogGrayScale.jsx

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

Illustrator 用スクリプト

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

CMYKgreySave.jsx

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

box.jsx

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

eps2png.jsx

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

fontList.jsx

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

fontreplace.jsx

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

placeWarnFiles.jsx

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

使用許諾 (ライセンス)

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

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

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

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

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

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


Copyright 2008-2010 Kenshi Muto