Word 文書を Base64 に変換する方法
.docxや.docファイルをボックスにドロップするか、ファイル選択で選びます。複数のファイルを同時に扱えます。- 出力形式 は最初 プレーン Base64 になっています。JSON はファイル名、MIME タイプ、サイズと一緒に包み、HTML
<a download>はダウンロードリンクを作ります。 - 76 文字で折り返し にチェックを入れるのは、MIME メールを手で組み立てる場合だけです。
- 出力をコピー します。
エンコードする前に文書を保存してください。ツールはディスク上のファイルをそのまま読むので、Word で開いたまま保存していない編集は含まれません。
DOCX か DOC か:先頭の文字を確認する
| ファイル | 中身 | Base64 の先頭 |
|---|---|---|
.docx | XML パーツを含む ZIP コンテナ | UEsDB |
.docm(マクロ付き) | 同じ ZIP コンテナ | UEsDB |
.doc | 複合ファイルバイナリ(OLE2) | 0M8R4KGxGuE |
暗号化された .docx | 複合ファイル内の暗号化パッケージ | 0M8R4KGxGuE |
サービスに「DOCX」が無効だと拒否され、Base64 が 0M8R4KGxGuE で始まっている場合は、.docx に名前を変えただけの古い .doc か、パスワード付きのファイルを送っています。JVBERi0 で始まるなら、誰かが PDF を .docx という名前で保存しています。PCFET0NUWVBF や PGh0bWw なら HTML で、ダウンロードがエラーページを返したことがよくある原因です。
Base64 の Word ファイルの行き先
- 電子署名や文書生成の API は、文書を JSON ボディ内の Base64 として、ファイル名や MIME タイプと一緒に受け取ります。記入済みや署名済みの文書も同じ方法で返すことがよくあります。
- トランザクションメールの API は、添付ファイルを JSON 内の Base64 文字列として受け付けます。同じものを生の MIME で表すと 76 文字の行になります。メールの Base64 を参照してください。
- 変換サービスは、DOCX を PDF に変換する際、小さなファイルならソースをインラインで受け付けます。
Base64 は転送用の形式で、何も保護しません。文字列を傍受した人は誰でも Base64 を Word に で文書をデコードできます。機密ファイルについては、TLS とアクセス制御に頼るか、文書を暗号化してください。エンコードと暗号化の違い を参照してください。
PHP で DOCX をエンコードする
<?php
$path = 'contract.docx';
$payload = json_encode([
'filename' => basename($path),
'contentType' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'content' => base64_encode(file_get_contents($path)),
], JSON_UNESCAPED_SLASHES);
JSON_UNESCAPED_SLASHES がないと、PHP は Base64 内の / をすべて \/ と書きます。これは有効な JSON で正しくデコードされますが、文字列が長くなり、単純なテキスト比較が通らなくなります。キー名は、お使いの API に合わせて置き換えるためのプレースホルダーです。詳しくは PHP での Base64 を参照してください。
Excel ファイルも MIME タイプが違うだけで同じ方法が使えます。Excel を Base64 に を参照してください。受け取る側が PDF に対応しているなら、PDF を Base64 に を使えば Word のバージョン間のレイアウトの違いを避けられます。
よくある質問
Base64 の DOCX にはどの MIME タイプを使いますか?
application/vnd.openxmlformats-officedocument.wordprocessingml.document です。古い .doc 形式は application/msword です。API ではタイプを別のフィールドで指定する必要があることが多く、それを使って変換処理を選ぶ API もあります。
DOCX の Base64 が UEsDB で始まるのはなぜですか?
DOCX は XML ファイルを集めた ZIP アーカイブで、ZIP はすべて PK\x03\x04 で始まり、これが Base64 では UEsDB になるからです。古いバイナリ形式の .doc は代わりに 0M8R4KGxGuE で始まります。
パスワード付きの DOCX が 0M8R4KGxGuE で始まります。壊れていますか?
いいえ。Word は DOCX を暗号化するとき、暗号化したパッケージを古い複合ファイル形式のコンテナに入れて保存するので、.doc と同じ形式のヘッダーになります。ファイルは正常で、受け取った側が開くにはパスワードが必要です。