ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
PDF (Portable Document Format) は、Adobe Systems の John Warnock が「Camelot プロジェクト」として 1991 年に構想し、1993 年に PDF 1.0 として公開した電子文書フォーマットである。OS・閲覧アプリ・プリンタを問わず同一の見た目で文書を表示することを目的に設計され、PostScript のページ記述能力を継承しつつ、ランダムアクセス可能なオブジェクト構造を導入した点が特徴である。2008 年に Adobe は仕様を ISO に寄贈し、現在は ISO 32000-1:2008 / ISO 32000-2:2020 として国際標準化されている。
文書の各ページは「ページオブジェクト」として独立しており、テキスト・ベクター画像・ラスター画像・フォント・注釈・フォームフィールドなどがオブジェクト参照によって組み立てられる。フォントを埋め込むことで受信者の環境にフォントが無くても同一表示が保証されるため、企業の契約書・公的機関の通知・学術論文・電子書籍の事実上の標準フォーマットとなっている。
内部構造とマジックナンバー
PDF ファイルは大きく分けて 4 つの構造を持つ。ヘッダ・ボディ・相互参照表 (xref)・トレーラー (trailer) である。
%PDF-1.7 <-- ヘッダ。マジックナンバー + バージョン
%ÃÃÃÃ <-- バイナリマーカー (高位ビット 8 バイト)
1 0 obj <-- オブジェクト本体
<< /Type /Catalog /Pages 2 0 R >>
endobj
...
xref <-- 相互参照表 (各オブジェクトのバイト位置)
0 5
0000000000 65535 f
0000000015 00000 n
trailer <-- ルートオブジェクトの位置情報
<< /Size 5 /Root 1 0 R >>
startxref
1234
%%EOF
マジックナンバーは ASCII の %PDF- (16 進 25 50 44 46 2D) で、直後にバージョン番号 (例 1.7) が続く。file コマンドや MIME 判定はこの先頭バイトを参照している。末尾は必ず %%EOF で終わるが、増分更新 (Incremental Update) で署名後に追記された場合は複数の xref/trailer/%%EOF が連なる。
圧縮ストリーム (FlateDecode / DCTDecode / JBIG2Decode) を用いてオブジェクトを圧縮する。テキスト抽出が難しい一因がこの多段デコードと、フォントのカスタムエンコーディング (ToUnicode CMap の有無) にある。
主な用途
- 契約書・申込書: 電子署名 (PAdES) とタイムスタンプで原本性を担保。e-Tax / GビズID 等の行政手続も PDF が中核。
- 論文・技術文書: arXiv、IEEE Xplore、IPA 公開文書はすべて PDF。LaTeX → pdflatex / lualatex / xelatex で生成。
- 印刷入稿: PDF/X-1a / PDF/X-4 で CMYK・トンボ・裁ち落としを規格化。Adobe InDesign からの書き出しが定番。
- 長期保存: PDF/A-1 / A-2 / A-3 で外部リソース禁止・フォント埋め込み必須化。国立公文書館や ISO アーカイブの標準。
- 電子書籍・カタログ: 紙面レイアウトをそのまま再現したい教材・パンフレット・取扱説明書で主流。
- 帳票出力: 業務アプリの請求書・見積書・納品書出力。
wkhtmltopdf/Puppeteer/TCPDF/FPDFで動的生成。
関連形式との比較
| 形式 | レイアウト | 編集容易性 | 標準化 | 主な用途 |
|---|---|---|---|---|
| 固定 | 低い | ISO 32000 | 配布・印刷・保存・契約 | |
| docx | 可変 (再フロー) | 高い | ISO/IEC 29500 | 編集中の原稿 |
| HTML | 可変 (レスポンシブ) | 高い | W3C | Web 表示 |
| EPUB | 可変 (リフロー型) | 中 | IDPF/W3C | 電子書籍 |
| PostScript (.ps) | 固定 | 低 | Adobe | 印刷の前駆フォーマット (現在は PDF に置換) |
| XPS | 固定 | 低 | ECMA-388 | Microsoft の対抗規格 (普及せず) |
編集・パーサ・ツール
# テキスト抽出
pdftotext input.pdf output.txt
mutool draw -F txt input.pdf
# 結合 / 分割 / 抜き出し
qpdf --empty --pages a.pdf b.pdf -- merged.pdf
qpdf input.pdf --pages . 1-5 -- first5.pdf
pdftk input.pdf cat 1-3 5 output out.pdf
# 圧縮 / 再エンコード
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dBATCH -sOutputFile=small.pdf input.pdf
# メタ情報の確認
pdfinfo input.pdf
exiftool input.pdf
# Python での解析
python -c "import pdfminer.high_level as p; print(p.extract_text('a.pdf'))"
注意点・落とし穴
- JavaScript 攻撃面: PDF は OpenAction / JavaScript アクションを持てるため、悪意のあるサンプルは閲覧だけで RCE につながる CVE が多発した (CVE-2018-4990 / CVE-2018-15981 など)。閲覧ソフトの自動更新と JS 無効化が基本。
- 埋め込みファイル: PDF は任意バイナリを内包できるため、マルウェアの運搬手段になり得る。
pdfid/peepdfで/EmbeddedFileや/Launchアクションの有無を検査する。 - フォントの埋め込み忘れ: PDF/A 化や印刷入稿で頻発。標準 14 フォントしか含まれていない PDF を別環境で開くと字形が崩れる。
pdffontsで確認。 - OCR 未適用のスキャン PDF: 画像のみで構成され検索不能。
ocrmypdfや Adobe Acrobat の OCR で透明テキスト層を付与する。 - 電子署名の検証: 増分更新で署名後に内容を改変できる構造上の弱点があり、2019 年に「Shadow Attack」「Incremental Saving Attack」が公表された。最新の検証ソフトでないと検知できない。
- テキスト抽出時の文字化け: ToUnicode CMap が無いフォントは抽出すると意味不明な PUA 文字になる。日本語 PDF で頻発。
関連リンク
- テキスト・ドキュメント形式 (親カテゴリ)
- ファイル拡張子とは (概論)
- CSV (.csv)
- Markdown (.md)
- docx / xlsx / pptx
- ISO 32000-2:2020 (PDF 2.0)
- qpdf (GitHub)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?