Como converter um documento Word para Base64
- Arraste um arquivo
.docxou.docpara a caixa ou escolha-o no seletor de arquivos. Vários arquivos de uma vez não são problema. - Saída como começa em Base64 puro. JSON envolve o resultado com o nome do arquivo, o tipo MIME e o tamanho; HTML
<a download>gera um link de download. - Marque Quebrar em 76 só para um e-mail MIME montado à mão.
- Clique em Copiar saída.
Salve o documento antes de codificar. A ferramenta lê o arquivo como ele está no disco, então edições ainda abertas no Word não entram.
DOCX ou DOC: confira os primeiros caracteres
| Arquivo | O que é | Base64 começa com |
|---|---|---|
.docx | contêiner ZIP com partes XML | UEsDB |
.docm (com macros) | o mesmo contêiner ZIP | UEsDB |
.doc | Compound File Binary (OLE2) | 0M8R4KGxGuE |
.docx criptografado | pacote criptografado em um compound file | 0M8R4KGxGuE |
Se um serviço rejeita o seu “DOCX” como inválido e o Base64 começa com 0M8R4KGxGuE, você está enviando ou um .doc antigo renomeado para .docx ou um arquivo protegido por senha. Se começa com JVBERi0, alguém salvou um PDF com nome .docx. PCFET0NUWVBF ou PGh0bWw significa HTML, muitas vezes um download que devolveu uma página de erro.
Para onde vão os arquivos Word em Base64
- APIs de assinatura eletrônica e de geração de documentos recebem o documento em Base64 em um corpo JSON, junto com um nome de arquivo e um tipo MIME, e muitas vezes devolvem um documento preenchido ou assinado do mesmo jeito.
- APIs de e-mail transacional aceitam anexos como strings Base64 em JSON. A versão MIME bruta da mesma coisa usa linhas de 76 caracteres; veja Base64 no e-mail.
- Serviços de conversão que transformam DOCX em PDF aceitam o arquivo de origem inline quando ele é pequeno.
O Base64 é um formato de transporte e não protege nada: qualquer pessoa que intercepte a string pode decodificar o documento com Base64 para Word. Para arquivos confidenciais, conte com TLS e controle de acesso, ou criptografe o documento. Veja codificação vs criptografia.
Codificar um DOCX em PHP
<?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);
Sem JSON_UNESCAPED_SLASHES, o PHP escreve cada / do Base64 como \/. Isso é JSON válido e decodifica corretamente, mas deixa a string mais longa e quebra comparações de texto ingênuas. Os nomes das chaves são exemplos; use os que a sua API pede. Mais em Base64 em PHP.
Para arquivos Excel, vale a mesma abordagem, com outro tipo MIME; veja Excel para Base64. Se o destinatário aceitar PDF, PDF para Base64 evita diferenças de layout entre versões do Word.
Perguntas frequentes
Qual tipo MIME acompanha um DOCX em Base64?
application/vnd.openxmlformats-officedocument.wordprocessingml.document. O formato antigo .doc é application/msword. As APIs costumam pedir o tipo em um campo separado, e algumas o usam para escolher um conversor.
Por que o Base64 do meu DOCX começa com UEsDB?
Um DOCX é um arquivo ZIP com arquivos XML, e todo ZIP começa com PK\x03\x04, que é UEsDB em Base64. Um .doc binário antigo começa com 0M8R4KGxGuE.
Meu DOCX protegido por senha começa com 0M8R4KGxGuE. Ele está corrompido?
Não. Quando o Word criptografa um DOCX, ele guarda o pacote criptografado dentro do contêiner compound file mais antigo, então o arquivo recebe o cabeçalho no estilo .doc. O arquivo está bom; o destinatário precisa da senha para abri-lo.