Crie uma grade de miniaturas de páginas PDF
Transforme a quantidade de páginas de um PDF e o número escolhido de colunas em uma especificação exata de grade.
Executar grátis
A calculadora retorna as linhas necessárias, o total de células e quantas miniaturas ocupam a última linha. Ela é útil na criação de visualizadores de PDF, folhas de contato, painéis de revisão, planejamentos de impressão ou interfaces que precisam reservar uma área previsível antes que as imagens de cada página estejam disponíveis.
Planeje a grade antes de renderizar as miniaturas
Uma interface de miniaturas de PDF geralmente precisa da estrutura antes do fim da renderização das imagens. Informe a quantidade de páginas e as colunas desejadas, e a calculadora retorna imediatamente o número exato de linhas. Ela também mostra a capacidade total do retângulo e quantas miniaturas reais ocupam a última linha. Com esses três valores, você pode reservar espaço estável, criar espaços reservados, dimensionar a área de rolagem ou dividir o trabalho sem abrir nem alterar o PDF. Por exemplo, um documento de 23 páginas em cinco colunas exige cinco linhas, oferece 25 células e coloca três miniaturas na linha final. O cálculo usa aritmética inteira determinística, portanto as mesmas entradas sempre geram o mesmo resultado. O recurso não renderiza imagens, não examina os bytes do PDF, não escolhe dimensões nem aplica estilos visuais. Ele responde apenas à questão de planejamento, sem rede, upload de arquivos ou hipóteses ocultas de exibição.
Interprete corretamente linhas, células e a linha final
O valor rows é o menor número inteiro de linhas capaz de acomodar todas as páginas na quantidade solicitada de colunas. Total cells multiplica linhas por colunas e descreve a capacidade do retângulo completo, inclusive posições vazias após a última miniatura. Last-row fill conta as miniaturas reais na linha final. Quando a quantidade de páginas é divisível exatamente pelas colunas, a última linha fica completa e seu preenchimento é igual ao número de colunas; o resultado não é zero. Essa convenção facilita laços, rótulos acessíveis e estilos. Os dois valores de entrada devem ser inteiros positivos seguros. Valores fracionários, ausentes, textuais, infinitos, nulos ou negativos são rejeitados, sem arredondamento ou conversão silenciosa. Menos de uma coluna é inválido porque nenhuma quantidade finita de linhas acomodaria páginas em uma grade sem colunas. O contrato rigoroso revela problemas de configuração perto da origem.
Use o resultado em visualizadores e fluxos de documentos
Em um visualizador, use as linhas para estimar a altura da galeria com base na altura conhecida da miniatura e no espaçamento. O total de células pode alimentar uma lista fixa de espaços reservados. Compare a capacidade com a quantidade de páginas para descobrir células vazias, embora o preenchimento final normalmente seja a referência mais clara para estilizar a última linha. Em um painel renderizado no servidor, os mesmos valores dividem páginas em lotes previsíveis ou geram marcos de paginação antes que os processos de imagem terminem. Criadores de folhas de contato podem escolher a orientação do papel conforme as linhas, e testes podem validar casos-limite como uma página, uma grade completa ou uma última linha com uma miniatura. Como o recurso recebe metadados, e não o PDF, você deve obter uma contagem confiável em outro lugar. Cada cálculo por API custa US$ 0,002; o navegador oferece o mesmo cálculo puro de forma interativa.
Casos de uso
Reserve a galeria de um visualizador PDF
Calcule as linhas antes do fim das miniaturas para evitar mudanças incômodas no layout do visualizador.
Monte um plano de folha de contato
Determine a capacidade retangular e a ocupação final para o número de colunas selecionado.
Teste pontos de responsividade
Compare resultados exatos com diferentes colunas e valide limites em testes automatizados de interface.
Perguntas frequentes
Quanto custa um cálculo?
Cada cálculo pela API custa US$ 0,002. O cálculo interativo também está disponível nesta página.
total_cells sempre é igual a page_count?
Não. O total de células representa a capacidade do retângulo completo e pode incluir posições vazias na última linha parcial.
O que acontece quando a última linha está completa?
O preenchimento final é igual ao número de colunas. Uma última linha completa é indicada como cheia, não como zero.
A quantidade de colunas pode ser zero?
Não. As colunas devem ser um inteiro positivo; valores abaixo de 1 produzem erro de entrada inválida.
Este recurso lê ou renderiza o PDF?
Não. Ele usa somente a quantidade de páginas informada e retorna números do layout; nunca recebe bytes do PDF nem cria imagens.
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/page-thumbnail-grid-layout \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"page_count":23,"columns":5}'const res = await fetch("https://api.kit.forhosting.com/pdf/page-thumbnail-grid-layout", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"page_count": 23,
"columns": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/page-thumbnail-grid-layout",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"page_count": 23,
"columns": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/page-thumbnail-grid-layout", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"page_count":23,"columns":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"page_count":23,"columns":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/page-thumbnail-grid-layout", 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": 23,
"columns": 5
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.page_thumbnail_grid_layout",
"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. |