Sobreponha dois PDFs e descreva cada página combinada
Sobrepor dois PDFs explica o conteúdo de uma composição página a página antes de você criar ou revisar o documento final.
Executar grátis
Forneça uma descrição ordenada para cada página do PDF base e outra para cada página do PDF sobreposto. O resultado preserva os pares, informa a ordem das camadas e gera uma descrição concisa de cada página combinada. É especialmente útil para conferir modelos de carimbo, papéis timbrados, marcas de aprovação e outros elementos gráficos repetidos. Quantidades de páginas diferentes são rejeitadas, pois não existe uma correspondência inequívoca entre as páginas.
Descreva os dois PDFs na ordem das páginas
Comece com dois arrays contendo texto extraído ou descrições visuais concisas, uma string para cada página do PDF. O array pages_base representa o documento de baixo, enquanto pages_overlay representa o documento colocado por cima. Mantenha cada array na ordem original: a primeira descrição da base é associada à primeira descrição da sobreposição, a segunda à segunda, e assim por diante. Uma descrição pode mencionar texto, logotipos, carimbos, bordas, campos de formulário ou qualquer outro elemento importante para sua revisão. Use uma string vazia quando uma página real estiver em branco; não remova essa entrada, pois isso deslocaria todos os pares seguintes. Esta capacidade descreve uma composição proposta ou extraída, em vez de alterar os bytes do PDF. Assim, ela atende a verificações de fluxo de trabalho, registros de auditoria e visualizações legíveis quando outro sistema já extrai o conteúdo ou conhece o projeto do modelo. Os dois campos devem ser arrays não vazios, todos os itens devem ser strings e o limite de entrada evita tarefas acidentalmente inviáveis.
Entenda o resultado da sobreposição
Para cada número de página, a resposta identifica a camada base inferior e a camada de sobreposição superior. A ordem explícita importa: um carimbo, papel timbrado ou anotação no PDF superior é conceitualmente desenhado depois do documento subjacente e pode cobrir parte dele em um arquivo renderizado. Como descrições simples não incluem coordenadas, cores, transparência, fontes nem limites exatos dos objetos, a ferramenta não afirma detectar colisões no nível de pixels. Em vez disso, ela fornece um relato determinístico de qual material descrito contribui para cada página composta. Páginas em branco recebem tratamento específico. Se a página sobreposta estiver vazia, a resposta informa que a base permanece desobstruída; se a base estiver vazia, somente a sobreposição contribui com conteúdo descrito; se ambas estiverem vazias, esse estado é registrado diretamente. Os espaços são normalizados para manter legíveis e estáveis as descrições copiadas de ferramentas de extração. As mesmas entradas sempre produzem a mesma sequência e redação, tornando os resultados confiáveis em testes automatizados e registros de aprovação.
Detecte erros de contagem antes da produção
Uma sobreposição de páginas só faz sentido quando cada página base tem exatamente uma página sobreposta correspondente. Por isso, a capacidade compara o tamanho dos dois arrays antes de descrever qualquer conteúdo e retorna um erro de entrada inválida quando eles diferem. Esse comportamento rigoroso identifica uma falha comum na produção de documentos: um modelo de carimbo com duas páginas aplicado a um contrato com três, ou uma capa inserida em um arquivo, mas não no outro. Corrija os documentos de origem ou adicione intencionalmente a descrição de uma página em branco para igualar as estruturas e execute a solicitação novamente. A resposta inclui a contagem verificada, a ordem geral de baixo para cima e um registro numerado para cada par, facilitando a comparação com uma ordem de serviço ou a integração em uma interface de revisão. A automação por API custa US$ 0,002 por solicitação. Como o processamento é local, determinístico e não usa rede nem modelos, descrições confidenciais não são enviadas a um provedor externo e o texto não varia entre execuções iguais.
Casos de uso
Revise um carimbo de aprovação
Confirme se cada página do contrato está associada à descrição correta do carimbo de aprovação ou revisão.
Confira modelos de papel timbrado
Descreva como cabeçalhos, rodapés ou bordas específicos se sobrepõem ao conteúdo existente.
Valide a montagem de documentos
Detecte uma página de modelo ausente ou extra antes que outro renderizador combine os PDFs de produção.
Perguntas frequentes
Esta ferramenta cria um PDF novo?
Não. Ela retorna uma descrição estruturada da composição página a página; não modifica nem renderiza bytes de PDF.
Qual PDF fica por cima?
pages_overlay é a camada superior, e pages_base é a camada inferior.
O que acontece se as contagens de páginas forem diferentes?
A solicitação falha com um erro de entrada inválida que informa as duas contagens.
Como devo representar uma página em branco?
Mantenha a posição dela no array e use uma string vazia para que as páginas seguintes continuem corretamente associadas.
É possível detectar se um carimbo oculta palavras específicas?
Não. Descrições textuais não fornecem geometria nem transparência; o resultado descreve as camadas, não a oclusão no nível dos pixels.
Quanto custa?
Cada solicitação de API custa US$ 0,002.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/pdf/overlay-two-files \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages_base":["Invoice 1042: customer, line items, and total due","Payment terms and bank details"],"pages_overlay":["APPROVED stamp centered across the page","APPROVED stamp centered across the page"]}'const res = await fetch("https://api.kit.forhosting.com/pdf/overlay-two-files", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages_base": [
"Invoice 1042: customer, line items, and total due",
"Payment terms and bank details"
],
"pages_overlay": [
"APPROVED stamp centered across the page",
"APPROVED stamp centered across the page"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/overlay-two-files",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages_base": [
"Invoice 1042: customer, line items, and total due",
"Payment terms and bank details"
],
"pages_overlay": [
"APPROVED stamp centered across the page",
"APPROVED stamp centered across the page"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/overlay-two-files", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages_base":["Invoice 1042: customer, line items, and total due","Payment terms and bank details"],"pages_overlay":["APPROVED stamp centered across the page","APPROVED stamp centered across the page"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages_base":["Invoice 1042: customer, line items, and total due","Payment terms and bank details"],"pages_overlay":["APPROVED stamp centered across the page","APPROVED stamp centered across the page"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/overlay-two-files", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"pages_base": [
"Invoice 1042: customer, line items, and total due",
"Payment terms and bank details"
],
"pages_overlay": [
"APPROVED stamp centered across the page",
"APPROVED stamp centered across the page"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.overlay_two_files",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
max_pages | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |