PDF

PDF (Portable Document Format) は アドビシステムズ (Adobe Systems Incorporated) により,PostScript をベースに開発された電子文書フォーマットです. 現在は,国際規格 ISO 32000-2:2017 として ISO により公開されています. PDF の基本は,紙に書かれた文書を電子文書として表現することですが,単なるページ記述言語の枠を超え,HTML のようなハイパーリンクによる文書内外のデータの相互リンク,JavaScript などによるインタラクティブなコンテンツや動画の再生機能なども備えています.

その用途は 1993 年の登場から広がりを見せ,現在では様々なニーズにあわせ,それに特化した派生規格も存在します. PDF から派生した規格として,主に以下のものがあります:

他にも E やら VT やら様々な ISO 規格があります.

Adobe より,元となる PDF の仕様書が公開されています (ISO の規格書は有償です):

Windows 10 と macOS では標準で PDF 出力が可能です. Windows 10 では Microsoft Edge で閲覧可能になるなど,PDF 環境は整ってきています.



PDF の作り方

TeX Wiki 内のページ "PDFの作り方" を参照してください.

PDF を扱うソフトウェア

Windows 10 と macOS では,プリント機能を持ったどんなアプリケーションからも, PDF を出力できます. また,PostScript や PDF などを扱う,Ghostscript というソフトウェアを用いた,PDF へ出力するための仮想プリンタが多数あります:

PDF を出力するソフトウェアをフリーウェア(無料)として提供しているものが多数あります.

広告付きのフリーウェア(アドウェア)として評価されたり議論されたりしているものも多数あります.

有償のソフトウェアも様々な価格帯で多数あります.

既存の PDF に対して,様々な操作や加工を行うソフトウェアが存在します.上述の Adobe Acrobat DC では多様なことができます.Acrobat DC の使い方については, Acrobat DC ユーザーガイド を参照して下さい.

以下では,主にオープンソースのソフトウェアについて紹介していきます.

PDF を操作する様々なプログラム

Poppler は PDF 描画ライブラリですが,PDF を操作する様々なユーティリティ・プログラムが付属しています.

また,Apache PDFBoxQPDFpdftk などにも様々な処理を行うプログラムが含まれます.

ファイルの結合やページの抽出

QPDFpdftk で,ファイルの結合やページの抽出など,様々な操作が行えます。 複数の PDF ファイルをまとめてひとつにしたり,特定のページのみ別のファイルに抽出したりする場合に,これらのプログラムが使えます。どちらもコマンドライン・プログラムです。

テキスト抽出

Poppler に含まれる pdftotext や Apache PDFBox を使うと,PDF 文書からテキストのみ抽出できます。

パスワード保護

QPDFpdftk で,暗号化による PDF の保護ができます.

Web 用に最適化

QPDF は Web 用に最適化するための機能を備えています.

Web 用に最適化を行うと,Web サーバーからページ単位で PDF をダウンロードできるようになります.巨大な文書では,これを有効にすると特に効果的です。

その他

PDF ビューア

Microsoft Edge が標準で PDF の描画をサポートしていたり,Google Chrome で使用されている PDF レンダリングエンジンの PDFium がオープンソース化されたり,ブラウザで PDF を描画させる PDF.js という JavaScript ライブラリが存在するなど,今では PDF を表示する環境は様々です.Windows 10, macOS, Linux などのデスクトップ環境から Android 端末や iOS 端末などのモバイル環境まで,様々な環境で PDF を標準で,あるいは簡単に表示できます.

Adobe Acrobat Reader DC が有名ですが,ほかにも様々あります:

Poppler を利用したものは多く,どれを使えばよいのかわかり辛いですが,使っているデスクトップ環境や好みの UI で選びましょう.

PDF ライブラリ

PDF 関連のソフトウェアを作成するためのライブラリも様々あります. 入門として,以下のサイトを参照すると良いでしょう:

PDF ライブラリにはその用途に応じて,大別して3種類あります.描画(レンダリング)ライブラリ,生成ライブラリ,そして加工やデータ抽出などに使える操作ライブラリです.これら複数の用途に使えるライブラリも存在します.PDFlib (日本語サイト) が有名ですが,無償で公開されている PDFlib Lite は,機能がかなり限定的です.

C と C++

Poppler は PDF の描画・操作ライブラリで,様々なビューアに利用されています.多くの言語に対するバインディングが存在し,Ruby などの各種言語で利用可能です.Xpdf-3.0 をベースに開発がスタートし,多くの改善がなされるとともに,Windows など様々なプラットフォームで利用可能となっています.

Haru free PDF library は C や C++ などをサポートする生成ライブラリです。様々な高水準グラフィックス・テキスト描画関数を備えており,PostScript Type1 や TrueType フォントなどの埋め込みが可能です.暗号化による PDF の保護にも対応しています.既存の PDF の読み込みには対応していません.

QPDF は,Jay Berkenbilt により保守・開発されている C++ の PDF 操作ライブラリです.既存の PDF の読み込みが行え,データの抽出や加工などに便利です.また,暗号化やリニアライゼーションをよくサポートしている点が魅力です.グラフィックス描画関数などは全くないため,PDF 生成を行うには,相当の PDF による図形やテキストの描画の知識が必要です.テキストやフォント関連のサポートなどもないため,自身で実装する必要があります.

Hummus PDF Writer は C++ や JavaScript (Node.js) で利用可能な生成ライブラリです.テキストやグラフィックスの描画だけでなく,既存の PDF の取り込みと加工が可能です.OpenType など様々なフォント形式をサポートします. 詳しくは,開発元の Features の項を参照してください.

PoDoFo は PDF ファイルを扱うための C++ ライブラリです.PDF を読み込み,加工することができます.

また,2D グラフィックス・ライブラリの Cairo も PDF 出力をサポートしており,手軽に PDF 生成が可能です.しおりやハイパーリンクなどの機能が不要であれば Cairo を使うのが簡単で良いでしょう.Cairo には Ruby など様々な言語でのバインディングがあります.

Java

Java ではいくつかの活発なプロジェクトがあります.

などを参照すると良いでしょう.

iText は Java で書かれた PDF 生成・操作ライブラリです. 比較的長い歴史があり,インターネットで検索すると,様々な記事が見つかります. AGPL と商用ライセンスの2ライセンス形態で利用可能です.

Apache PDFBox は,オープンソースの,Java による PDF 生成・操作ライブラリとツール群です.

Ruby と Python

Prawn は Ruby 製の PDF 生成ライブラリです.Ruby のみで書かれています.

その他,Ruby では,Poppler バインディング や,PDF 生成の選択肢として rcairo による Cairo での出力などが挙げられます.

Python では,PDF 生成ライブラリとして, ReportLab などがよく知られています.

その他

関連リンク


Last-modified: 2018-11-07 (水) 00:25:17 (33d)