FIELD NOTES: 書を持って街へ出よう

合同会社フィールドワークス プログラマ兼代表のブログ

CamlPDFで実装されている機能について

概観

サイトにも簡潔に書かれていますが,CamlPDFはPDFファイルを編集するための比較ローレベルなライブラリです。したがってこのライブラリだけで,例えばPDF帳票を生成するアプリを作成することは不可能ではないにしろ非常に大変なことになると思います。
ただ,機能は低レベルですが,一つ一つのモジュールが手抜きなく実装されている印象です。

主なモジュールの機能

主なモジュールで実装されている機能は以下の通りです。

PdfDoc
PDF文書を抽象化したモジュールです。
PdfPages
PDF文書内の「ページ」を抽象化したモジュールです。
PDFRead
PDFファイルを読み込み構造を解析します。読み込んだ結果として,PdfDocが作成されます。
PDFWrite
PdfDocの内容をファイルに書き出します。このとき,「線形化PDF(Webに最適化)」の状態で出力することもできます。
PDFCodec
ストリームオブジェクトに掛けるフィルタが実装されています。最も使用頻度が低いと思われるLZW形式も実装されています。
PDFCrypt
PDFの暗号化に必要な機能が実装されています。
PDFText
主にフォントまわりの情報を解析する機能が実装されています。PDFの仕様で定義されているフォント形式・エンコーディングは一通りカバーしているようです。CFF形式のバイナリデータからType1フォントのグリフを抽出して,Type3形式に変換する機能まで実装されています。ただし,苦労して抽出したフォント情報を利用して何ができるかと言えば,文字コードエンコーディング機能ぐらいしか提供されていません。
PDFImage
ストリームとして格納されている画像データからRGB値を取り出します。ただし,JPEG, JPEG2000, JBIG2などの非可逆画像形式には未対応のようです。
PDFFun
「関数」が実装されています。驚いたことに「タイプ4(PostScript計算)関数」まで実装されているようです。関数はPDFをレンダリングしようと思わない限り必要ないはずですが,きちんと実装されています。

実装されていない機能

逆に他のPDFライブラリと比較して,以下の機能が不足しているように思います。

高レベルな描画API
PostScriptレベルの描画APIしか提供されていません。フォントやイメージ等のリソースも辞書レベルで組み立てて定義するしかありません。
注釈
Acrobatで言うところの「フォーム」関係の機能がなぜか全く実装されていません。「しおり」等の情報にアクセスできる程度の機能があると,色々使えると思うのですが。