Gera, une ou extrai texto de documentos PDF.
Nó PDF
O nó PDF (pdf_sdk) executa operações de PDF no servidor usando pdf-parse (extração de texto) e pdf-lib (criar e unir). Entrada e saída de conteúdo binário usam strings Base64 para passar arquivos de webhooks, respostas HTTP ou passos anteriores do workflow.
Disponível na paleta Ferramentas em Automações.
Figura 1: Nó PDF — seletor de modo e campos específicos por modo
O que faz
O nó executa um dos três modos selecionados em Modo (pdf_mode):
| Modo | Valor | Motor | Finalidade |
|---|---|---|---|
| Ler texto | extract_text | pdf-parse | PDF → texto puro + contagem de páginas |
| Criar PDF | create_text | pdf-lib | Documento de texto simples → PDF em Base64 |
| Unir PDFs | merge | pdf-lib | Vários PDFs em Base64 → um único PDF em Base64 |
| Propriedade | Valor |
|---|---|
| ID do tipo de nó | pdf_sdk |
| Rótulo na paleta | |
| Executor | pdf_sdk |
| API externa | Nenhuma — processamento local no servidor |
| Credenciais | Não exigidas |
Como configurar
Passo 1 — Adicionar o nó
- Abra Automações e edite seu workflow
- Na paleta, abra a categoria Ferramentas
- Arraste PDF para o canvas
- Escolha o modo que corresponde ao passo (extrair, criar ou unir)
Passo 2 — Selecionar o modo
Abra Modo (pdf_mode):
- Ler texto (PDF → texto) —
extract_text - Criar PDF (texto simples) —
create_text - Unir PDFs (vários Base64 → um) —
merge
Apenas os campos do modo selecionado precisam de valor; os demais são ignorados.
Modo: Ler texto (extract_text)
Extrai todo o conteúdo de texto de um arquivo PDF codificado em Base64.
Campos
| Campo | Obrigatório | Descrição |
|---|---|---|
PDF (Base64) (pdf_base64) | Sim | String Base64 bruta do arquivo .pdf (sem prefixo data:application/pdf;base64, a menos que o passo anterior sempre inclua — prefira Base64 puro) |
Aceita variáveis:
{{trigger.body.document_base64}}
{{http_1.data.file_content}}
{{variables.uploaded_pdf_b64}}
Saída
| Saída | Descrição |
|---|---|
text | Texto puro extraído (pode incluir quebras de linha; layout não é preservado) |
numpages | Número de páginas analisadas |
info | Objeto de metadados do PDF do pdf-parse (título, autor, etc., quando presentes) |
Exemplo nos passos seguintes:
{{pdf_1.text}}
{{pdf_1.numpages}}
Limitações: PDFs só de imagem/scan sem OCR retornam pouco ou nenhum texto. Layouts complexos (várias colunas, tabelas) podem não extrair bem.
Modo: Criar PDF (create_text)
Monta um PDF simples com título opcional e texto do documento. O motor usa Helvetica / Helvetica Bold, quebra linhas longas e adiciona páginas quando o conteúdo transborda.
Campos
| Campo | Obrigatório | Descrição |
|---|---|---|
Título (opcional) (pdf_title) | Não | Título em negrito no topo da primeira página |
Texto do documento (pdf_text_content) | Recomendado | Corpo do texto; caracteres de nova linha viram novas linhas no PDF |
Exemplo:
Título: Recibo #{{variables.order_id}}
Texto do documento: Cliente: {{variables.customer_name}}
Total: R$ {{variables.total}}
Obrigado pela compra.
Saída
| Saída | Descrição |
|---|---|
pdf_base64 | PDF gerado como string Base64 |
page_count | Número de páginas no documento gerado |
Use {{pdf_1.pdf_base64}} em upload HTTP posterior, nó Google Drive ou decodifique em JavaScript se necessário.
Limitações: Apenas texto puro — sem imagens, fontes customizadas ou HTML rico. Para layouts com marca, gere PDFs externamente e passe Base64 no modo unir ou armazene via HTTP.
Modo: Unir PDFs (merge)
Concatena dois ou mais arquivos PDF (em ordem) em um único documento.
Campos
| Campo | Obrigatório | Descrição |
|---|---|---|
Lista de PDFs (JSON) (pdf_base64_list) | Sim | Array JSON de strings Base64, ex.: ["base64_pdf_1", "base64_pdf_2"] |
Mínimo de 2 strings não vazias. A ordem no array é preservada na saída.
Com variáveis:
["{{variables.contract_b64}}", "{{variables.annex_b64}}"]
Ou monte o array em um nó JavaScript:
return {
parts: [variables.part_a, variables.part_b, variables.part_c].filter(Boolean)
};
Depois:
{{js_1.result.parts}}
(passado em pdf_base64_list como JSON)
Saída
| Saída | Descrição |
|---|---|
pdf_base64 | PDF unido em Base64 |
page_count | Total de páginas após a união |
merged_count | Número de PDFs de origem unidos |
Trabalhando com Base64
Bytes de PDF circulam no workflow como texto Base64. Padrões comuns:
De upload via webhook
Muitas integrações enviam file_base64 ou similar em JSON. Mapeie diretamente:
pdf_base64: {{trigger.body.file_base64}}
Remover prefixo data-URI (JavaScript)
Se o upstream envia data:application/pdf;base64,JVBERi0...:
const raw = trigger.body.pdf || '';
const b64 = raw.includes(',') ? raw.split(',')[1] : raw;
variables.pdf_clean = b64;
return { pdf_base64: b64 };
Considerações de tamanho
PDFs grandes aumentam memória de execução e tamanho de log. Corte ou rejeite arquivos muito grandes em um passo inicial de Condição ou JavaScript quando possível.
Dicas e boas práticas
- Escolha o modo certo primeiro — o subtítulo no canvas atualiza (Ler texto / Criar PDF / Unir PDFs) para identificar passos rapidamente.
- Valide Base64 cedo — Base64 inválido gera
PDF: pdf_base64 não é Base64 válido; corrija a codificação upstream antes do nó PDF. - Extrair → Condição → rotear — use palavras-chave em
{{pdf_1.text}}para classificar documentos (nota fiscal vs. contrato). - Criar → SMTP / Drive — combine o modo criar com SMTP (link no e-mail) ou Google Drive para armazenamento.
- Unir antes de assinar — combine capa gerada + PDF de template antes de Clicksign ou Zapsign quando esses nós esperam um único arquivo.
- Não dependa da extração para tabelas — parse dados estruturados no sistema de origem quando disponível, em vez de raspar texto do PDF.
Exemplos de uso
Exemplo 1 — Classificar documento enviado
Trigger: Webhook — cliente envia PDF.
Fluxo:
- PDF (extrair) —
pdf_base64: {{trigger.body.document}} - Condição —
{{pdf_1.text}}contémNOTA FISCAL - Ramo A → atualização no CRM "nota fiscal recebida"
- Ramo B → repasse ao Agente para revisão manual
Exemplo 2 — Gerar e enviar recibo por e-mail
Trigger: Webhook de pagamento.
Fluxo:
- Variável —
order_id,customer_name,total - PDF (criar) — título e corpo das variáveis
- JavaScript — opcional: metadados junto com
pdf_base64 - SMTP — corpo HTML com detalhes do pedido (PDF como link se hospedado em outro lugar, pois o nó SMTP não tem campo de anexo)
Exemplo 3 — Unir contrato + termos
Fluxo:
- HTTP — busca PDF de termos em Base64 no CDN
- Variável — armazena como
terms_b64 - PDF (unir) —
["{{variables.contract_b64}}", "{{variables.terms_b64}}"] - Zapsign — envia
{{pdf_1.pdf_base64}}como conteúdo do documento
FAQ
Por que "PDF: informe pdf_base64"?
O modo extrair recebeu string vazia após resolução de variáveis. Verifique o nome do campo no webhook e se o caminho de saída do nó anterior está correto.
Por que "modo unir exige ao menos 2 strings Base64"?
O modo unir exige array JSON com pelo menos duas entradas Base64 não vazias.
Por que o texto extraído está vazio?
O PDF pode ser baseado em imagem (scan). Use OCR upstream ou solicite PDFs com texto nativo no sistema de origem.
Posso criar PDFs com imagens ou HTML?
Não com este nó — o modo criar é só texto puro. Use serviço externo ou ferramenta de template e passe Base64 nos modos extrair ou unir.
A união preserva bookmarks ou formulários?
pdf-lib copia páginas; recursos avançados dos arquivos de origem podem não persistir totalmente. Teste com seus documentos.
Quais saídas existem por modo?
| Modo | Saídas principais |
|---|---|
| extract_text | text, numpages, info |
| create_text | pdf_base64, page_count |
| merge | pdf_base64, page_count, merged_count |
Erro de modo inválido?
Apenas extract_text, create_text e merge são válidos. Erros de digitação em pdf_mode ou variáveis não resolvidas podem causar PDF: modo inválido.
Artigos relacionados
- Visão geral de Ferramentas
- Nó SMTP
- Nós de Contratos
- Nós de Dados — armazenamento no Google Drive
- Nó JavaScript
- Variáveis no workflow
- Como testar e depurar um workflow
Este artigo foi útil?
Precisa de mais ajuda? Falar com suporte