Extraia a primeira e a última página de um PDF
O extrator da primeira e da última página de PDF transforma o total conhecido de páginas em uma instrução de extração exata e determinística.
Executar grátis
Informe esse total para identificar a página 1 e a página final, retornando um manifesto de PDF com duas páginas, nome de arquivo estável e tipo de mídia. O documento precisa ter pelo menos duas páginas, pois um arquivo de página única não possui dois limites distintos. O resultado é útil quando outra etapa já conhece o total e precisa de uma seleção inequívoca para uma operação posterior.
Mantenha as duas páginas que delimitam o documento
PDFs longos costumam concentrar informações importantes em extremos opostos. A primeira página pode trazer capa, título, identificação da conta, período do relatório ou referência de envio; a última pode conter assinaturas, aprovações, totais, anexos ou protocolos. Esta capacidade representa a operação comum de preservar as duas páginas de limite sem exigir que você calcule separadamente o número final. Ao informar o total, o resultado identifica a página de origem 1 e a página cujo número corresponde a esse total. O manifesto sempre descreve um PDF de duas páginas na ordem original: primeiro a inicial e depois a final. Ele também fornece o tipo de mídia PDF e um nome previsível para download, facilitando o envio a um fluxo que produza arquivos. O documento original não é modificado. Como a seleção depende apenas da posição, o conteúdo das páginas escolhidas não é inspecionado, classificado, resumido nem reinterpretado.
Entenda a validação e a numeração das páginas
A numeração começa em um, como nas ferramentas comuns de PDF: a página inicial é 1, e não 0. O valor `page_count` deve ser um número inteiro finito e ter no mínimo 2. Frações, textos numéricos, valores ausentes, listas e objetos são recusados em vez de convertidos silenciosamente. Essa regra impede que uma solicitação pareça válida quando os metadados de origem estão incorretos. Um PDF de uma página também é recusado, pois sua primeira e última páginas são a mesma, enquanto esta capacidade promete dois limites distintos. Em um documento de 2 páginas, a seleção é 1 e 2; em um de 300, é 1 e 300. A saída informa o total original e o novo total de 2, evitando que o código seguinte tenha de adivinhar qual número descreve cada documento. Os números das páginas selecionadas também aparecem explicitamente para que registros, interfaces e etapas posteriores expliquem exatamente o que foi solicitado.
Use o manifesto com segurança em um fluxo automatizado
Esta capacidade é determinística e limitada por intenção. Ela não acessa a rede, não lê segredos, não armazena documentos e não usa horário atual nem valor aleatório. Assim, o mesmo total válido sempre produz o mesmo manifesto. Um fluxo típico obtém uma contagem confiável durante a inspeção do PDF, chama esta capacidade para definir os limites e entrega `extracted_pages` ao componente que copia essas páginas dos bytes de origem para um PDF novo. Separar a seleção da transferência é útil em ferramentas de navegador, filas e sistemas de auditoria nos quais o acesso ao arquivo e as regras operam em etapas diferentes. Confirme que o total pertence ao mesmo PDF recebido pela etapa de cópia; uma contagem desatualizada poderia indicar uma página além do fim de uma versão nova. A automação por API custa US$ 0,002 por solicitação, e a lógica pura também pode rodar no navegador. A resposta nunca altera a origem; defina separadamente a retenção do arquivo resultante.
Casos de uso
Prepare a capa e a página de assinaturas
Selecione a capa inicial e a página final de assinaturas de um contrato para criar um arquivo compacto de revisão.
Arquive os limites de um relatório
Registre a página de título e a certificação final de um relatório longo sem calcular a última posição no código.
Monte um fluxo de processamento de PDF
Transforme o total de páginas em uma seleção explícita de duas páginas para um copiador de PDF posterior.
Perguntas frequentes
Quanto custa a solicitação de API?
Cada solicitação de API custa US$ 0,002. A lógica determinística também pode ser executada no navegador.
Por que PDFs de uma página são recusados?
Em um PDF de uma página, a primeira e a última são iguais. Esta capacidade exige duas páginas de origem distintas.
A numeração começa em zero ou em um?
Ela começa em um. A primeira página é 1, e a última equivale a `page_count`.
O PDF original é alterado?
Não. A resposta descreve de forma determinística um PDF novo de duas páginas e mantém a origem intacta.
Posso enviar o total como texto?
Não. Envie `page_count` como inteiro. Textos numéricos e frações são recusados para evitar ambiguidades.
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/first-last-page-extract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"page_count":12}'const res = await fetch("https://api.kit.forhosting.com/pdf/first-last-page-extract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"page_count": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/first-last-page-extract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"page_count": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/first-last-page-extract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"page_count":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"page_count":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/first-last-page-extract", 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
{
"page_count": 12
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.first_last_page_extract",
"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. |