text2pdf.pl - テキストのPDF化
PDFJサンプルスクリプト

2004年8月9日
中島 靖
<nakajima@netstock.co.jp>



1 概要

プレーンテキストによる原稿を整形してPDF化します。レイアウト指定のための特殊文字はいっさい使用しないので、表現力は限定されますが、原稿の使い回しがしやすい利点があります。

表題、日付や著者名などの文書情報、４段階の見出し、記号や番号や語句による箇条書き、半角固定ピッチの段落、といった要素からなる文書が作成できます。図や表は使えません。



2 使用法

 perl text2pdf.pl テキストファイル PDFファイル

と実行すると、テキストファイルの内容が整形されてPDFファイルへ出力されます。PDFファイルの指定を省略すると、テキストファイル名に.pdfを追加したファイル名となります。

テキストファイルの日本語文字コードとしてはシフトJISと日本語EUCが扱え、それぞれ次のようにオプション引数-sと-eで指定します。

 perl text2pdf.pl -s テキストファイル PDFファイル
 perl text2pdf.pl -e テキストファイル PDFファイル

上述のように-s,-eを省略した場合は、後述する設定ファイル中で指定したコードと見なされます。日常よく使う方の文字コードを設定ファイルの中で指定しておけばよいでしょう。



3 原稿書式


3.1 見出し行

次の条件を満たす行が空白行に挟まれて並んでいる部分は見出し行とみなされます。

・行頭と行末が空白文字でない
・長さが60バイト以下
・前の行が空白行か見出し行である
・句点（全角の。．，、）で終わらない
・二行目以降にラベルが付かない

文書中で最初に現れた見出し行は表題とみなされて、大きく中央寄せで出力されます。二番目の見出し行は文書情報とみなされて、右寄せで出力されます。三番目以降に現れた見出し行は、その前の空白行の数に応じて、1段階から4段階までの見出しとなります。（空白行の数が5以上の場合は4とみなされます。）見出しは段階に応じた大きさとなり、前後に適当な間隔が取られます。
先頭からいくつ目までの見出し行をどうレイアウトするか、各段階の見出し行をどうレイアウトするか、は設定ファイルで変更できます。
また設定ファイルで、所定のパターンに合致する見出し行に対して特別なレイアウトが指定できます。例えば、「様」や「御中」で終わる見出し行は宛名として扱ったり、「以上」だけの見出し行は右寄せにするなどです。詳しくは設定ファイルをご覧ください。


3.2 空白行

空行またはタブと半角スペースだけからなる行を空白行と呼びます。
見出し行の前後の空白行はその数通りの空行が出力されるのではなく、設定ファイルで指定された前後間隔が出力されます。本文行の間の空白行は、その数に応じた空行として出力されます。原稿テキストの先頭の空白行は無視されます。


3.3 本文行

見出し行でも空白行でもない行は、本文行となります。

3.3.1 字下げ

本文行は半角4文字分字下げして出力されます。さらに、行頭に半角スペースかタブの並びがあると、タブを半角4文字幅に展開してから、半角スペース数に応じて字下げされます。デフォルトの字下げ幅やタブ幅は設定ファイルで変更できます。

	例えば、タブ一つで字下げすると、この段落のようになります。行が折り返されても字下げされた位置で頭が揃います。

3.3.1 半角固定ピッチ

半角スペースで始まる行は、半角文字にプロポーショナルフォントを使用せず、半角固定ピッチで出力されます。半角スペースも半角幅で出力され、半角英字とかなや漢字の間などに自動挿入される余白も抑止されるので、ソーステキストのイメージ通りの出力となります。表やプログラムソース部分などに使用します。

  例えば半角スペース二つで始めるとこのようになります。（下の行は半角と全角の空白で位置を揃えています。）
  品名            価格
  ============= ======
  ABCマウス　　  1,000


3.4 ラベル

見出し行や本文行で、行頭（字下げのためのスペースやタブを除いて）に特定の記号やパターンが現れるとラベルとみなされます。ラベルとは段落の先頭行の頭に付けられる文字列のことです。

記号ラベル	「・※○◎●」のいずれかの記号。
番号ラベル	「(番号)」「番号)」のいずれか。番号は半角のアルファベット1文字か2桁までの数字。括弧は半角でも全角でもOK。
語句ラベル	タブが途中にあるとその前が語句ラベルになります。この行自体が語句ラベルの例になっています。

	○例えばこれは記号ラベル「○」のついた行の例です。このように折り返された二行目以降はラベル幅だけ字下げされます。
	1）これは番号ラベル「1）」のついた行の例です。このように折り返された二行目以降はラベル幅だけ字下げされます。記号ラベルとはラベル幅が違います。

記号や番号のパターン、ラベル幅や本体との間隔をどれだけ取るかは設定ファイルで変更できます。



4 設定ファイル

text2pdf.plは、同じディレクトリにあるtext2pdf.pl.cfgという設定ファイルに従って整形をおこないます。このファイルはEUCで書かれていなければなりません。このファイルを編集して設定を変更できます。
一時的に一部の設定を変更したい時には、変更したい設定だけを抜き出して記述したファイル（これもEUCでなければならない）を作成しておき、次のようにして実行します。

 perl text2pdf.pl -c 設定ファイル テキストファイル PDFファイル

この場合、指定した設定ファイルの内容で、text2pdf.pl.cfgの内容が上書きされることになります。

設定ファイルは、次の書式となっています。

・# で始まる行はコメント
・「項目名 = 値文字列」という行は項目に文字列がセットされる
・「項目名 = [リスト]」という行は [リスト] の部分をPerlの式として評価して得られた配列参照が項目にセットされる

各項目の説明がtext2pdf.pl.cfgにコメントとして入れてありますので、それを見ながら適宜変更してください。
