ClibPDFのススメ

to home
 ClibPDFTMFastIO Systems が販売するPDFを直接作るANSI C のライブラリです。ただし、非商用に限って は無料で使用することができます(詳しくはこちらを)。 一部使えない関数もありますが、日本語もOKです。 このClibPDFを使って、TeXのソースをPDFに変換するコンバータTeX2PDF もどきを製作してみようと思います。もどきです。 まずはTeXの一握りの(笑)のコマンドに対応するところから始めてみます。 私の環境は、Win95+VC6.0(SP3)です。ただし、今後使用するであろう字句解析と 構文解析はCygnusのWin32ツール(flex,yacc)を使用するつもりです。
 (*)AdobeもPDF作成用のSDKを用意しているようです。詳しくは ここ
  1. ライブラリの生成
  2. まずは簡単なPDFを作成
  3. Step1 テキストファイル→PDF変換
  4. Step2 オブジェクト指向設計


  1. ライブラリの生成
  2.  ClibPDFはソースで提供され、プラットフォームに合わせてコンパイルして ライブラリを生成して使用します。VCでコンパイルする方法を説明します。
    1. 解凍
      ダウンロードしたファイル(clibpdf202r1.zip)を適当なフォルダに 解凍します。ClibPDFというディレクトリが作成され、その下にも 複数のサブディレクトリが存在します。ClibPDF\source にソース があります。

    2. ワークスペースを生成
      VCを起動して、ファイル(F)→新規作成(N)で[プロジェクト]タブを クリックします。「Win32 Static Library」を選択します。プロジェクト 名(N)は"cpdf"と入力しておきます。位置(C)はお好みの場所に。

    3. プロジェクトへファイルの挿入
      プロジェクト(P)→プロジェクトへ追加(A)→ファイル(F)で、 先ほど解凍したClibPDF\source以下のファイル(testpdf.cを除く全ての ファイル)を追加します。

    4. ビルド
      ビルド(B)→ビルド(B) でライブラリを作成します。 Debugフォルダ下にライブラリcpdf.libが生成されています。 以下、このcpdf.libを使用します。PATHを把握しておいて下さい。
      (注)Debugモードでビルドしていることを忘れないで下さい。必要に応じて Releaseモードでリビルドして下さい。


  3. まずは簡単なPDFを作成
  4. ClibPDF\examples\Cjk\japanese に日本語のサンプルソース(jpntest.c)があります。 これをコンパルしてみましょう。
    1. ワークスペースを生成
      VCを起動して、ファイル(F)→新規作成(N)で[プロジェクト]タブを クリックします。「Win32 Console Application」を選択します。プロジェクト 名(N)は"jpntest"と入力しておきます。位置(C)はお好みの場所に。

    2. ファイルコピー
      上記で指定した位置(フォルダ)に、jpntest.c と ClibPDF\source\cpdflib.h をコピーしておきます。

    3. ライブラリcpdf.libをプロジェクトに追加
      プロジェクト(P)→プロジェクトへ追加(A)→ファイル(F)で、 ファイルの種類(T)を「ライブラリファイル(.lib)」にして ClibPDF\cpdf\Debug\cpdf.lib (ライブラリの生成で作成したライブラリ)を選択します。

    4. ビルド
      ビルド(B)→ビルド(B) で実行ファイルを作成します。

    5. 実行
      [F5]で実行してみて下さい。こんなPDFファイル が生成されます。

      (注)事前にAcrobat Readerをインストールしておく必要があります

      get acrobat reader


  5. Step1 テキストファイル→PDF変換
  6. 第1段階としてテキストファイルを入力して、それをPDFに変換する プログラムを作成してみます。最初なので簡単にしています。 ソースが汚いのですが気にせずアップします(苦笑)。 VC6のソース(27KB)です。 尚、ライブラリcpdf.libと、ヘッダファイルcpdflib.h の2ファイル は同梱しておりません。再配布の問題もあろうかと思いますので、 各自ダウンロードしてビルドして獲得して下さい。
    Releaseモードでビルドしたバイナリ(128KB) もアップします。実用には程遠いですが。
     ClibPDF\examples にも同様な例題text2pdfが ありますが、TextBox関数を使用しているので日本語が使えません。


  7. Step2 オブジェクト指向設計
  8. Step1でClibPDFを実際に使用してみてPDFファイルを生成することろまで 体験できたと思います。 折角ですがここで、TeX2PDFを目指してもっと基本的なところに戻って設計からやり直します。 GoFのデザインパターンより、Compositeパターン、Strategyパターンを 御手本にして設計します。将来、図や表も考慮に入れたい、TeXのコマンドを 解釈する必要がある、TeXではなくPlaneText も食わせたい等々あるので、 それらを考慮しておきます。と言うか後で容易に変更・追加できるように 設計しておきます。現在この設計中です。設計が完了したら そのクラス図でもアップしようと思います。 いい考えがありましたら、メールでも下さい。


(*)ClibPDFに関する日本語サイトは少ないのですが、 ここに ClibPDF関数の日本語マニュアルがあります。貴重ですね。どうもです。


to home

by masu
e-mail: massun.masumoto@nifty.ne.jp
URL : http://member.nifty.ne.jp/~masumoto/