Como usar
- Cole a string Base64, ou um data URI que comece com data:application/pdf;base64, na caixa de entrada.
- Confira se o arquivo foi detectado como PDF e leia-o no visualizador.
- Baixe o PDF para salvá-lo no seu dispositivo.
Como copiar o Base64 de uma resposta de API
Serviços que geram faturas, etiquetas de envio, relatórios ou contratos assinados costumam devolver o PDF dentro de um JSON, por exemplo {"filename": "label.pdf", "data": "JVBERi0..."}. Copie apenas o texto entre as aspas depois do nome do campo e fique atento a estes detalhes:
- Barras escapadas. Alguns codificadores JSON, entre eles o
json_encodedo PHP, escrevem cada/como\/. Como/é um caractere normal do Base64, substitua\/por/antes de colar, ou interprete o JSON primeiro e copie o valor. - Aspas e vírgulas. Deixe de fora as aspas ao redor do valor e qualquer vírgula no final.
- Quebras de linha. Espaços e quebras de linha reais dentro do Base64, como em um valor quebrado a cada 76 caracteres, não causam problema e não precisam ser removidos. Sequências literais
\nou\r\nno JSON bruto são outra história: elas são formadas por caracteres de barra invertida e precisam ser apagadas.
Copiar o valor da visualização já interpretada nas ferramentas de desenvolvedor do navegador evita todos esses problemas de escape.
Como extrair um PDF anexado a um e-mail
Os anexos de e-mail ficam armazenados em Base64 dentro da mensagem bruta. Abra o código-fonte da mensagem ("Mostrar original" no Gmail, "Código-fonte da mensagem" no Thunderbird, "Fonte Bruta" no Apple Mail) e encontre a parte cujos cabeçalhos incluem Content-Type: application/pdf (ou application/octet-stream com um nome de arquivo .pdf) e Content-Transfer-Encoding: base64. Copie o bloco que começa depois da linha em branco abaixo desses cabeçalhos e termina antes da próxima linha iniciada por --, que é o delimitador MIME. Cole-o aqui do jeito que está; as quebras de linha são ignoradas.
Como exibir um PDF em Base64 no seu aplicativo web
Quando o seu front-end recebe um PDF em Base64 e precisa exibi-lo, uma Blob URL é mais confiável que um data URI, que alguns navegadores se recusam a abrir em uma nova aba:
const bytes = Uint8Array.from(atob(base64), c => c.charCodeAt(0));
const blob = new Blob([bytes], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
window.open(url); // ou use como src de um <iframe>
Chame URL.revokeObjectURL(url) quando o documento não for mais necessário, para liberar a memória. Observe que atob só aceita o alfabeto Base64 padrão, então converta antes qualquer entrada segura para URL (- e _).
Perguntas frequentes
Por que meu Base64 não é detectado como PDF?
JVBERi0, a codificação de %PDF-. Se o seu começa com aspas, um nome de campo ou outro texto, remova-o. Se começa com SlZCRVJ, o PDF foi codificado em Base64 duas vezes: decodifique-o uma vez com o decodificador Base64 e cole o resultado aqui. Caso contrário, os dados podem ser de outro tipo de arquivo, que Base64 para arquivo consegue identificar.O PDF é baixado, mas não abre. O que deu errado?
O mais provável é que o Base64 tenha sido cortado. Logs, consoles e ferramentas de banco de dados costumam truncar valores longos, e um PDF sem o final não pode ser lido, porque a tabela de referência cruzada que localiza cada página fica perto do fim do arquivo. Copie o valor completo de novo, de preferência salvando a resposta original em um arquivo.
A prévia fica em branco no meu celular. O arquivo está corrompido?
Não necessariamente. Alguns navegadores móveis não conseguem exibir um PDF dentro de uma página. Baixe o arquivo e abra-o em um leitor de PDF para conferir.
Posso decodificar um PDF protegido por senha?
Sim. A decodificação restaura o arquivo byte a byte, incluindo a criptografia. A prévia pode pedir a senha ou ficar vazia, e o arquivo baixado abre em qualquer leitor de PDF depois que você digita a senha.
O documento é enviado para algum lugar?
Não. A decodificação e a prévia acontecem no seu navegador, então PDFs confidenciais, como contratos, holerites ou prontuários médicos, permanecem no seu dispositivo.