Base64 を Word 文書にデコードする手順
- Base64 を Base64 または data URI に貼り付けます。
data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,の接頭辞はあってもなくてもかまいません。長い文字列は .txt ファイルを開く でテキストファイルから読み込めます。 - ファイル情報の下の ドキュメントのテキスト に文書の内容が表示されます。1 段落が 1 行で、タブと手動の改行はそのまま保たれます。
- テキストの下のエントリ一覧には、.docx を構成するパーツが並び、それぞれに 表示 と 保存 があります。
- ファイルをダウンロード を押して .docx を保存します。
プレビューは、ブラウザの XML パーサーで word/document.xml を読み取ります。Web ページとして描画されるものも実行されるものもなく、ファイルはどこにも送信されません。ページの Content Security Policy が、Cloudflare のページビュー計測を除くすべてのネットワークリクエストをブロックしています。
テキストプレビューに含まれるもの
DOCX は XML ファイルを集めた ZIP アーカイブです。プレビューは本文のテキストだけを取り出し、それ以外の構造には手を付けません。何がどこに表示されるかを知っておくと便利です。
| 文書内の要素 | プレビューでの扱い |
|---|---|
| 本文の段落と見出し | 文書の順に 1 つずつ 1 行で表示 |
| 表 | 行ごとに、各セルの段落をそれぞれ別の行に表示 |
| 変更履歴 | 承諾済みとして表示:挿入されたテキストは表示し、削除されたテキストは表示しない |
| ページ番号や日付などのフィールド | 最後に計算された結果を表示し、フィールドコードは非表示 |
| テキストボックスと図形 | そのテキストを表示。重複する場合あり(FAQ を参照) |
| ヘッダー、フッター、脚注、コメント | テキスト欄には出ない。該当するエントリを 表示 で開く |
| 書式、画像、ページレイアウト | 表示しない |
画像やスキャンしたページしか含まない文書では、「このドキュメントにはテキストがありません。」と表示されます。
画像やその他のパーツを取り出す
ファイルは ZIP アーカイブなので、どのパーツも個別に取り出せます。画像は word/media/ に image1.png、image2.jpeg といった名前で入っています。表示 で画像を確認でき、保存 でその名前のままダウンロードできます。生成された文書からロゴや署名の画像を、Word を開かずに手早く取り出す方法として使えます。docProps/core.xml の文書プロパティには、ファイルを保存したプログラムが記録した作成者、タイトル、日付が入っています。
エントリ一覧とその制限、アーカイブのチェックについては、Base64 から ZIP へ のページで詳しく説明しています。
DOCX か DOC か、それ以外か
Base64 の先頭を見れば、ファイルの種類がわかります。
| Base64 の先頭 | ファイル | ツールの動作 |
|---|---|---|
UEsDBBQABgAI | Microsoft Word で保存した DOCX | テキストプレビューとエントリ一覧 |
UEsDB の後に別の文字 | ほかのソフトで作った DOCX(LibreOffice は UEsDBBQACAgI)、またはほかの ZIP ベースのファイル | word/ のエントリがあるかで判定 |
0M8R4KGxGuE | 旧形式の .doc(Word 97–2003)、またはパスワード付きの .docx | 「DOCXではないようです」と表示し、種類は DOC/XLS/MSG(OLE) |
e1xydGYx | RTF({\rtf1) | RTF のようだと表示し、.rtf としてダウンロード を提示 |
JVBERi0 | PDF のようだと表示し、.pdf としてダウンロード を提示 |
OLE の場合は、手作業が 1 つ必要です。ツールは .doc と暗号化された .docx を区別できないため、拡張子 は docx のままになります。旧形式の Word ファイルなら、ファイルをダウンロード を押す前にそこへ doc と入力してください。パスワード付きの文書なら docx のまま保存し、Word でパスワードを入力して開きます。どちらもテキストプレビューは表示されません。
Base64 の Word 文書が使われる場面
文書生成やテンプレート処理のサービスは、.docx を作成して JSON レスポンスに入れて返します。メールシステムは Word の添付ファイルを Base64 の MIME パートとして運びます。EML デコーダー ならメッセージ全体を開いて添付ファイルを一覧できます。CRM やチケット管理システムのエクスポートでは、添付ファイルがレコードの横に Base64 テキストとして保存されていることがよくあります。ファイルからそうした文字列を作るには Word から Base64 へ を使ってください。
Python で DOCX をデコードして本文を読む
標準ライブラリだけで、ファイルを保存し、プレビューと同じように段落を出力できます。
import base64, io, zipfile
import xml.etree.ElementTree as ET
W = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
with open("memo.b64") as f:
docx = base64.b64decode(f.read())
with open("memo.docx", "wb") as f:
f.write(docx)
with zipfile.ZipFile(io.BytesIO(docx)) as z:
body = ET.fromstring(z.read("word/document.xml"))
for p in body.iter(W + "p"):
print("".join(t.text or "" for t in p.iter(W + "t")))
プレビューと同じく、これが読むのは本文だけです。ヘッダーは同じ方法で word/header1.xml を読んでください。大きなファイルを分割してデコードする方法は Python での Base64 をご覧ください。
よくある質問
Base64 を Word 文書に変換するには?
上の入力欄に文字列を貼り付けて ファイルをダウンロード を押すと、decoded.docx、または data URI に含まれる名前で保存されます。必要なら先に ファイル名 で名前を変えてください。
このページで文書を編集できますか?
できません。このページはテキストを読めるように表示するだけで、ダウンロードされるのは 1 バイトも変わらない元のファイルです。編集は Word、LibreOffice Writer など .docx を開けるプログラムで行ってください。
テキストボックスの文字が 2 回表示されるのはなぜですか?
Word はテキストボックスを、新しい形式と古いソフト向けの代替形式の 2 通りで保存し、プレビューはその両方のテキストを読むためです。文書自体にはボックスが 1 つしかありません。
ヘッダー、フッター、コメントはどこにありますか?
ファイル内の別のパーツ(word/header1.xml、word/footer1.xml、word/comments.xml)に入っています。エントリ一覧で該当するパーツの横にある 表示 を押すと XML を読めます。テキストは <w:t> 要素の中にあります。