| この記事の要点 |
|
概要
RTF (Rich Text Format) は 1987 年に Microsoft が策定した文書交換用フォーマット。書式付き文書を「テキスト + 制御文字」で表現することで、異なるワープロソフト間で書式を保ったままやり取りできるよう設計された。
誕生から約 40 年が経過した今でも、Microsoft Word / WordPad / LibreOffice Writer / macOS TextEdit など、ほぼ全ての主要ワープロが読み書きをサポートする。一方、Word の主力は DOCX に移っており、RTF は「相手の環境が分からない時の保険」「Word を持たない相手にも書式を渡す手段」として残っているのが実情。
2008 年に Microsoft は RTF 仕様の更新を停止しており、Microsoft 365 では新規機能が反映されない。
内部構造
RTF は 制御文字付きの ASCII テキスト。{ でグループを開始、\ から始まる制御語で書式を指定する。テキストエディタで開くとそのまま中身が見える。
{\rtf1\ansi\ansicpg932\deff0
{\fonttbl{\f0\fnil\fcharset128 MS Mincho;}}
{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}
\viewkind4\uc1
\pard\f0\fs24
これは普通のテキストです。\par
\b 太字\b0 と \i 斜体\i0 と \cf2 赤い文字\cf1 を含む。\par
}
主要な制御語の意味:
\rtf1— RTF バージョン 1\ansi/\ansicpg932— 文字コード (cp932 = Shift_JIS)\fonttbl— フォントテーブル\b...\b0— 太字 ON / OFF\i...\i0— 斜体 ON / OFF\par— 段落区切りሴ5— Unicode 文字 (10 進)\cf2— colortbl の 2 番目の色
主な用途
- 互換性重視の文書交換 — 相手の環境 (Word / LibreOffice / WordPad) が不明な時
- システムからの帳票出力 — メモ帳でも読めるリッチテキストを生成する用途
- WordPad の既定保存形式 — Windows の標準軽量ワープロ
- クリップボード経由の書式付き貼り付け — アプリ間で書式を維持してコピペする内部表現として OS が使う
- 外部ツールから Word 文書生成 — DOCX を作るより RTF を組み立てるほうが単純で軽い
関連形式との比較
| 形式 | 仕様提供 | 実体 | 書式 | 編集容易性 | セキュリティ |
|---|---|---|---|---|---|
| RTF | Microsoft (1987-2008) | 制御文字付きテキスト | あり | テキストエディタで可 | 過去に重大脆弱性多数 |
| DOCX | Microsoft / ISO | ZIP + XML | あり | 専用ツール推奨 | VBA マクロは要注意 |
| DOC (旧) | Microsoft | バイナリ | あり | 専用ツール必須 | マクロ脆弱性 |
| TXT | — | プレーンテキスト | なし | テキストエディタで可 | 原則安全 |
| Markdown | — | プレーンテキスト | 軽量マークアップ | テキストエディタで可 | 原則安全 |
| HTML | W3C | マークアップテキスト | あり | テキストエディタで可 | JS 実行に注意 |
編集・パーサ・ツール
Python では striprtf でテキスト抽出、pyth や独自パーサで構造的に処理する。pandoc も RTF を読み書きできる。
# RTF からプレーンテキスト抽出
from striprtf.striprtf import rtf_to_text
with open('document.rtf', 'r', encoding='utf-8') as f:
rtf = f.read()
text = rtf_to_text(rtf)
print(text)
# pandoc で相互変換
pandoc document.rtf -o document.docx
pandoc document.rtf -o document.md
pandoc document.md -o document.rtf
# unrtf で RTF -> HTML / TXT
unrtf --html document.rtf > document.html
unrtf --text document.rtf > document.txt
注意点・落とし穴
- セキュリティ脆弱性が多発した過去 — RTF の OLE オブジェクト埋め込み・外部リンク機能が攻撃ベクタとなり、CVE-2017-0199 (HTA 経由でリモートコード実行) や CVE-2017-11882 (数式エディタの脆弱性) など、メール添付の RTF を開くだけで PC が乗っ取られる重大脆弱性が複数発見されてきた
- 不審な .rtf は開かない — Word の保護ビューを必ず有効化する。社内ポリシーで .rtf 添付を遮断するケースもある
- 文字コードの罠 — 日本語 RTF は cp932 (Shift_JIS) で出力されることが多く、UTF-8 環境で文字化けする
- 仕様更新停止 — 2008 年以降 Microsoft は RTF 仕様を更新していない。新しい Word 機能 (リボン的な装飾) は RTF には反映されない
- 機械処理に不向き — テキストではあるが制御文字との混在で、安定したパースが難しい。大量解析が必要なら DOCX か Markdown に変換してから扱う
- サイズ効率が悪い — 同じ内容でも DOCX の数倍になることがある
関連リンク
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09