ソースコードについて
PDFDesigner
PDFファイルを編集できるオープンソースのJavaScriptライブラリ

PDFDesigner Tools
PDFファイルを編集できるDLL(WindowsのC++/VB/Delphiで利用可能)

次はおまけのコードです。ご自由に使ってください。

jpeg2pdf JpegファイルをPDFファイルに変換(C/C++)
jpeg2pdf JpegファイルをPDFファイルに変換(Delphi)
bmp2pdf BMPファイルをPDFファイルに変換(Delphi)
txt2pdf テキストファイルをPDFファイルに変換(C++)
txt2pdf テキストファイルをPDFファイルに変換 (Delphi)

その他のソースはGitHubにもあります。

PDF関連リンク
PDFフォーマット資料

PDF Reference Manual 本家の仕様書
Acrobat JavaScript Object
Specification
Acrobat JavaScriptの日本語訳
Adobe Solutions Network Adobeの技術情報サイト。
handmadepd.txt  PDFファイルのフォーマット解説
手書きPDF入門 PDFファイルのフォーマット解説
CIDフォント CID-Keyedフォントについて

PDFライブラリ

CLibPDF C言語など
PDFlib C言語など
Ghostscript C言語
Xpdf C言語
iText java
PDFJ Perl
Hobbit's PDF Library java
ReprotLab Python? ・・・。
txt2pdf Perl


Wayback Machine
ネット上から消滅してしまったウェブページを再び見ることが出来る最強のページ。(英語)

Portable Document Formatの覚え書き
  • PDF仕様書の日本語訳は「PDFリファレンス」 ¥6,800で入手できる
  • PDFオブジェクトの記述方法は作成するソフトによって全く違う
  • 壊れたPDFファイルを作成するソフトが沢山ある(市販ソフトやシェアウェアでもよくある)
  • PDF1.0、PDF1.1で作成されたPDFファイルはほとんど「LZW」で圧縮されている
  • テキストはストリームの「BT..ET」の間に記述される。グラフィックスオブジェクトのスタック「q、Q」には注意すること
  • ストリーム内にはインラインイメージ「BI. .. EI」が出現する場合がある
  • インラインイメージには「Length」はない。自己計算するしか方法はない
  • PDFオブジェクトにはダイレクト/インダイレクト形式がある
  • XObjectのサブタイプが「Form」にはコンテンツストリームが潜んでるので忘れずに!
  • PDF仕様書には載っていないオブジェクト形式が存在する(勝手に作ってる場合がある)
  • 「Resource、Rotate、MediaBox」などは親ページから継承できるので忘れずに!
  • ストリーム内のテキストが配列([ .. ])のとき文字のツメ量は必ず計算すること
  • JavaScript内での「日本語の扱い」はAcrobat4.0とAcrobat5.0以降とでは違う
  • テキストを16進表記< .. >で表現する場合はエスケープ処理は必要ない
  • しおりを開いた状態で表示するには「Count」を正の表現に、閉じた状態で表示するには負の表現にする
  • 削除済みオブジェクトにはPDFオブジェクトの実体は存在しない