PDF目次生成ソフトウェア

PDF目次生成 Ver2.0

●CSV形式のデータ取り込み後の階層表示(上)
●自動コード変換結果の表示(下)

PDFのしおり(目次)は閲覧者にとって必須の機能ですが,Acrobat 上でひとつひとつ入力しながら,リンク頁を設定するのはたいへん面倒な作業です。しかもPDF化したい書籍などが何点もあれば尚更です。
Acrobat 日本語版が発売されてからPDFの需要はますます高まっているのに,いちいちしおりを作るのはたいへんだなあという視点で,PDF目次生成ソフトウェア「PDF目次生成」を開発しました。
「PDF目次生成」は,Excel などで作られた CSV 形式のデータを取り込み,pdfmark operator のコーディングによってPDFに目次を付加するWindows 対応のフリーウェアです。

「PDF目次生成」のダウンロード

  mokuji2.zip(2.3MB)

・適当なフォルダを作ってからダウンロードしてください。
 mokuji2.zipを解凍後,setup.exeをダブルクリックすると,簡単にインストールできます。
 なお同梱の mokuji フォルダの中には,sample.xls/sample.csv/mokuji.ps/sample01.ps/sampleRunFile.ps/mokuji.pdf ファイルが入っています。

「PDF目次生成」の利用方法

 PDFのしおりを,

序 文
第1章 序論
  1.1 物質科学の道具としてのコンピュータ・シミュレーション
  1.2 自然現象のモデル化
第2章 古典分子動力学法
  2.1 はじめに
  2.2 分子動力学法のアルゴリズム
     2.2.1 分子動力学法の要素技術
     2.2.2 質点系の基礎方程式(NTPアンサンブル)
     2.2.3 質点系の基礎方程式
  2.3 物質のポテンシャル関数
     2.3.1 ポテンシャル関数の分類
     2.3.2 ペアポテンシャル
第3章 第一原理分子動力学法

のように階層化して作りたい場合の利用方法です。【mokuji.pdf 参照】

<Step 1> Excel でデータを作り,CSV 形式で保存する

《例》(Excel でのイメージ 【sample.xls 参照】)

 

A

B

C

1

序 文

 

3

2

第1章 序論

2

7

3

1.1 物質科学の道具としてのコンピュータ・シミュレーション

 

7

4

1.2 自然現象のモデル化

 

9

5

第2章 古典分子動力学法

3

11

6

2.1 はじめに

 

11

7

2.2 分子動力学法のアルゴリズム

3

12

8

2.2.1 分子動力学法の要素技術

 

12

9

2.2.2 質点系の基礎方程式(NTPアンサンブル)

 

13

10

2.2.3 質点系の基礎方程式

 

13

11

2.3 物質のポテンシャル関数

2

14

12

2.3.1 ポテンシャル関数の分類

 

14

13

2.3.2 ペアポテンシャル

 

15

14

第3章 第一原理分子動力学法

 

16

  A 列:しおり名  B 列:子の数  C 列:リンク頁

 B 列の「子供の数」について
 「子供の数」はしおりを階層化するために必要です。上記の例では,第1章は子としての節が 2つあります。第2章は子としての節が 3つあります。2.2節は子としての小節が 3つあります。2.3節は子としての小節が 2つあります。あとはすべて子がありません。入力は半角の数字ですが,子がない場合は入力不要(または0を入力)です。

 C 列の「リンク頁」について
 通常,一般書籍やマニュアルや雑誌は序文など前付頁があります。通し頁(絶対頁)番号で入力してください。前付頁がノンブル i から vi で,本文がノンブル 1 で始まっている場合などは,前付頁を 1 から 6 とし,本文は 7 からと解釈してください。以下同様ですので,本文は 6 を足した整数値で入力することになります。
 テクニックとしてD 列に数字を入力し,C 列に通し頁番号の計算式を使った場合,必ず D 列以降のセルの内容はすべてクリアしてください。

 入力が終わったら,プリントアウトし,チェックしてください。間違いがなければ CSV 形式で保存します。【sample.csv 参照】

<Step 2>「PDF目次生成」を立ち上げ,CSV 形式のファイルをオープンする

<Step 3> PostScript(テキスト)形式でファイルを保存

 続いてファイルを保存します。拡張子は ps となります。デフォルトでは mokuji.ps として保存されます。【mokuj.ps 参照】

<Step 4> sampleRunFile.ps をテキストエディターでオープンし,修正する

 同梱の sampleRunFile.ps は,psファイルを連結するのに使います。このファイルをエディターでオープンし,mokuji.ps としおりを付加したい目的の psファイルを連結します。ここでは mokuji.ps とsample01.ps を連結します。【sample01.ps および sampleRunFile.ps 参照】

《例》

    …   (省略)
(c:/harada/Mokuji/mokuji.ps) prun
(c:/harada/Mokuji/sample01.ps) prun
    …   (省略)

のパス名が記述されている 2 行の部分を修正してください。

(ドライブ名/フォルダ名/.../ファイル名) prun

の要領です。フォルダ名やファイル名は全て英数字です。追加したい psファイルがあれば順番通り記述してください。パス名などを確認したら,名前を付けて保存します。(仮に,renketu.ps としておきます)

<Step 5> Acrobat Distiller を立ち上げ,psファイルをオープンし,PDFを作る

 Acrobat Distiller を起動後,renketu.ps ファイルをオープンすると,しおりの入ったrenketu.pdfというPDFが出来上がります。renketu.ps ファイルをAcrobat Distiller にドラッグしてもいいでしょう。
 なお <Step 4> を省略し,mokuji.ps だけをDistiller にドラッグすると,しおりと白紙だけの mokuji.pdf というPDFが作成されます。確認用にも使えます。【mokuji.pdf 参照】

ご注意

 [1]sample.xls は説明のため簡潔にしました。従ってこの結果としての mokuji.ps と sample01.ps は内容的には一致していませんが,支障はありません。念のため。
 [2]取り込むデータは <Step 1> の通りの CSV 形式になっていますか? Windows Excelで作成し,CSV 形式で保存されたものは問題ありません。他のプラットホームの場合,漢字コードはShift_JIS,改行コードはWindows(CR+LF)のCSV 形式で作ってください。
 [3]LaTeX2eユーザーの方は,正規表現をサポートしているエディターや Perl などを利用し,*.toc ファイルを sample.csv のように整形してからお使いください。この場合[2]を守ってください。(直接取り込めればいいんですが,スタイルファイルに影響されるので,見送りました)
 [4]<Step 4> のsampleRunFile.ps で,パス名など間違っていませんか? 間違っていればPDFは作成されません。
 [5]Windows画面の解像度は,1024×768以上(1152×864または1280×1124を推奨)にしてください。

応用編

 [Q]sample01.psのようなPSファイルがなく,PDFファイルしかない場合はどうしたらいいのでしょうか?
 [A]通常WordやInDesign,QuarkXPressなどアプリケーションからPSファイルを作ります。ただそのデータが残っていないが,PDFファイルがある場合はそれをAcrobatでオープンします。その後,「ファイル」→「書き出し」→「PostScript」を選択し,保存すると,PSファイルが出来上がります。

 [Q]通し頁(絶対頁)番号ではなく,本の通りに i とか vi とかも使いたいんですが?
 [A]pdfmark operator では,本のようにページを表す i とか vi の記述が許されていません。 <Step 1> で説明したように,通し頁(絶対頁)番号で入力する必要があります。ただし,Acrobat上で「文書」→「ページ番号」の設定で,ステータスバーに i などをノンブルとして表示させることは可能です。



pdfmark operator について

 PDFのしおり名に和欧混植の文字を使用するためには,非常に厄介な手続きが必要です。Acrobat で公開されている特別な記述としての pdfmark operatorを利用しますが,しおりの文字列は Unicode で取り扱われ,PDFDocEncoding という独自のエンコーディング処理を行って初めて利用可能となります。次の例で明解ですが,Unicode をベースに 20 から 7F の範囲内にあるかどうかで,ASCII文字と 8 進数で表現します。例外は半角の "\" と"(" と")" の 3 文字です。結局 6 パターンに分かれます。

《例》

文 字

Shift_JIS

Unicode

PDFDocEncoding

備 考

82A0

3042

0B

ASCII文字+ASCII文字

8341

30A2

0\242

ASCII文字+8進数

8EA8

8033

\2003

8進数+ASCII文字

985F

8AD6

\212\326

8進数+8進数

A【半角】

41

0041

\000A

null文字+ASCII文字

1【半角】

31

0031

\0001

null文字+ASCII文字

\【半角】

5C

005C

\000\\

null文字+\+ASCII文字

(【半角】

28

0028

\000\(

null文字+\+ASCII文字

)【半角】

29

0029

\000\)

null文字+\+ASCII文字

 従ってしおり名の文字列として,"あア耳論A1\()" の場合は,

0B0\242\2003\212\326\000A\0001\000\\\000\(\000\)

となりますが,Unicode Byte Order Marker の \376\377 を先頭に付加し,更に前後を括弧で囲み,

(\376\3770B0\242\2003\212\326\000A\0001\000\\\000\(\000\))

のように記述します。「PDF目次生成」はこのしおり名に子供の数(階層化のため)とリンク頁を追加して,次のような PostScript ファイルを生成します。

%!PS-Adobe-3.0
%%BeginProlog
/bd {bind def} bind def /fsd {findfont exch scalefont def} bd /sms {setfont moveto show} bd /ms {moveto show} bd systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put } if
%%EndProlog
%%BeginSetup [ /Count
0 /Page 1/View [/XYZ null null 1.0]/Title (\376\3770B0\242\2003\212\326\000A\0001\000\\\000\(\000\)) /OUT pdfmark
%%EOF

 このように「PDF目次生成」は,PDFファイルを作成する過程で,あらかじめ PostScript ファイルにある pdfmark operator を追加し,Acrobat で行うしおりの設定を Distill 時に埋め込み処理させようとするものです。埋め込まれた pdfmark operator は単にマーカーとして参照されるだけで,実際のプリンターが搭載している PostScript インタープリンタではスキップされるように記述するため,印刷には影響されません。