Como decodificar Base64 para um documento do Word
- Cole o Base64 em Base64 ou data URI, com ou sem o prefixo
data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,. Strings longas podem vir de um arquivo de texto via Abrir arquivo .txt. - Abaixo das informações do arquivo, Texto do documento mostra o que o documento diz: uma linha por parágrafo, com tabulações e quebras de linha manuais preservadas.
- Abaixo do texto, a lista de entradas mostra as partes que compõem o .docx, com Ver e Salvar para cada uma.
- Clique em Baixar arquivo para salvar o .docx.
A prévia lê word/document.xml com o parser XML do seu navegador. Nada é renderizado como página web, nada é executado, e o arquivo não é enviado a lugar nenhum: a Content Security Policy da página bloqueia todas as requisições de rede, exceto as do contador de visitas da Cloudflare.
O que a prévia de texto inclui
Um DOCX é um arquivo ZIP com arquivos XML dentro. A prévia pega o texto do corpo principal e deixa o resto da estrutura de lado, então vale saber o que vai parar onde:
| No documento | Na prévia |
|---|---|
| Parágrafos do corpo e títulos | Uma linha cada, na ordem do documento |
| Tabelas | Os parágrafos de cada célula em linhas próprias, linha a linha da tabela |
| Alterações controladas | Mostradas como se aceitas: o texto inserido aparece, o excluído não |
| Campos como números de página ou datas | O último resultado calculado; o código do campo fica oculto |
| Caixas de texto e formas | O texto delas, às vezes repetido (veja as perguntas frequentes) |
| Cabeçalhos, rodapés, notas de rodapé, comentários | Fora do painel de texto; abra a entrada correspondente com Ver |
| Formatação, imagens, layout da página | Não aparecem |
Um documento que só tem imagens ou páginas digitalizadas mostra “Nenhum texto encontrado neste documento.”
Como extrair imagens e outras partes
Como o arquivo é um ZIP, cada parte pode ser acessada separadamente. As imagens ficam em word/media/ como image1.png, image2.jpeg e assim por diante: Ver mostra a imagem, Salvar baixa com o nome original. É um jeito rápido de tirar um logotipo ou uma imagem de assinatura de um documento gerado sem abrir o Word. As propriedades do documento em docProps/core.xml mostram o autor, o título e as datas gravadas pelo programa que salvou o arquivo.
A página Base64 para ZIP explica com mais detalhes a lista de entradas, seus limites e as verificações do arquivo compactado.
DOCX, DOC ou outra coisa
O início do Base64 diz que tipo de arquivo você tem:
| O Base64 começa com | Arquivo | O que a ferramenta faz |
|---|---|---|
UEsDBBQABgAI | DOCX salvo pelo Microsoft Word | Prévia de texto e lista de entradas |
UEsDB seguido de outros caracteres | DOCX de outro software (o LibreOffice grava UEsDBBQACAgI) ou outro arquivo baseado em ZIP | Procura entradas word/ para decidir |
0M8R4KGxGuE | .doc antigo (Word 97–2003) ou .docx protegido por senha | Mostra “Isto não parece ser DOCX” com o tipo DOC/XLS/MSG (OLE) |
e1xydGYx | RTF ({\rtf1) | Diz que parece ser RTF e oferece Baixar como .rtf |
JVBERi0 | Diz que parece ser PDF e oferece Baixar como .pdf |
O caso OLE exige um passo manual. A ferramenta não consegue distinguir um .doc de um .docx criptografado, então a Extensão fica docx. Para um arquivo antigo do Word, digite doc ali antes de clicar em Baixar arquivo; para um documento protegido por senha, mantenha docx e abra no Word com a senha. Não há prévia de texto em nenhum dos dois casos.
De onde vêm documentos do Word em Base64
Serviços de geração de documentos e de templates preenchem um .docx e o devolvem dentro de uma resposta JSON. Sistemas de e-mail transportam anexos do Word como partes MIME em Base64; o decodificador de EML abre uma mensagem inteira e lista os anexos. Exportações de CRM e de sistemas de chamados muitas vezes guardam anexos como texto Base64 ao lado do registro. Para gerar uma string assim a partir de um arquivo, use Word para Base64.
Como decodificar um DOCX e ler o texto em Python
A biblioteca padrão basta para salvar o arquivo e imprimir os parágrafos, mais ou menos como a prévia faz:
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")))
Assim como a prévia, isso lê só o corpo principal. Para os cabeçalhos, leia word/header1.xml do mesmo jeito. Veja Base64 em Python para decodificar arquivos grandes em partes.
Perguntas frequentes
Como converter Base64 em um documento do Word?
Cole a string acima e clique em Baixar arquivo; o resultado é salvo como decoded.docx, ou com o nome que vem no data URI. Se quiser, renomeie antes em Nome do arquivo.
Posso editar o documento nesta página?
Não. A página mostra o texto para você ler, e o download é o arquivo original, byte por byte. Edite no Word, no LibreOffice Writer ou em qualquer outro programa que abra arquivos .docx.
Por que o texto de uma caixa de texto aparece duas vezes?
O Word salva cada caixa de texto em duas formas, uma moderna e uma alternativa para leitores antigos, e a prévia lê o texto das duas. O documento em si contém a caixa uma vez só.
Onde ficam os cabeçalhos, rodapés e comentários?
Em partes separadas do arquivo (word/header1.xml, word/footer1.xml, word/comments.xml). Clique em Ver ao lado de uma delas na lista de entradas para ler o XML; o texto fica nos elementos <w:t>.