
「Pages+AppleScriptで本を作ろう」を書き始めた④
巨大な作り物をしなければならず、途中で作業が止まっていましたが、「Pages+AppleScriptで本を作ろう」がこの作り物を終えたことで、前に進みそうな気配です。
Pages本の1つの山、印刷してホチキス留めして作る小冊子
Pagesで本を作って、ページ数が少ないものであれば、プリンタで両面印刷してホチキス留めして簡易製本してもよいのでは? と思い至りました。
このためのAppleScriptを企画して、仕様書なども作っていました。これを「パーソナル面付けScript」と呼んでいます。
PDFをそのまま「印刷」機能を用いてA4用紙に両面印刷して、半分に折って重ねてホチキス留めしても「小冊子」にはなりません。
両面印刷して折って重ねてホチキスで留めれば小冊子になるようなデータを出力する、そんな便利なScript……割と「やること」が多いので、作る前から心が折れてしまいそうです。
PDFのページ数をカウント
PDFと同階層に乱数(UUID)名でフォルダを作成
PDFをページごとに分割して、乱数フォルダ内に、オリジナルファイル名に子番号を追加したファイル名で書き出す
分割したPDFのすべてのファイル名をソートしつつ取得(1→9)
ページ配置計画データ1を作成(1次元方向。4の倍数でない末尾の箇所を空白ページで埋める)
ページ配置計画データ2を作成(見開きで。2次元配列上に作成)
Keynote書類の仕上がりスライド(ページ)枚数を、ページ配置計画データ2から取得する
ページアップするKeynote書類(空白レイアウト×ページ数)を作成
右側ページアップ(ページ上に配置してリサイズする処理)
左側ページアップ(ページ上に配置してリサイズする処理)
と、こんな処理内容です。
当初、「Pagesの書類を開いた状態で実行して、Keynoteの書類が出来上がる(のでそれを両面印刷)」流れをイメージして企画していましたが、Pagesから書き出したPDFを指定して処理したほうが使い勝手がよさそうなので、そのように変更しました。
Cocoaの機能を駆使して、AppleScriptでPDFViewをメモリ上に作成し、その上でPDFの拡大縮小/重ね合わせ加工を行う方法も検討していたのですが……重ね合わせ処理を行なったら、下地が透けてしまったりと、まだいろいろ手を加える必要があるようです。Keynoteを利用するのは、技術的な難易度が低いからです。
「書籍のオマケ」から逸脱した大規模Script
オマケのオマケぐらいの位置付けのScriptなのに、これだけいろいろ組まなくてはならないことがわかって、ちょっとヤル気が失せました。
ただ、唐突かつ早急に家族に関する小冊子を作る必要に迫られ、状況が一変します。当初はこの(小冊子印刷用の)データを手作業で作っていたものの、作業がめんどくさいので一気にScriptを書いて自動化しました。
結果として、この本の制作作業が大きく進むことになり……いつできるのか見通しは立っていませんが、それなりの内容になりそうです。
Adobe Acrobatには「小冊子印刷機能」が
作成中に調べて確認していたのですが、この機能はAdobe Acrobatの印刷ダイアログの中に入っています。「小冊子」印刷機能です。


私が書いたAppleScriptは、PDFを分解したのちにKeynote書類に配置してKeynoteの機能を用いて印刷することになります。
Acrobatの印刷可能範囲よりもKeynoteの印刷可能範囲が広い(余白が少ない)のと、4の倍数に満たない場合に途中に空白ページを挿入するような処理を行なっているため、自分としては本書添付のAppleScriptのほうが性能が高い、と自負しているものです。