Juntar fotos em um PDF
Juntar fotos em um PDF transforma imagens soltas — prints de comprovante, páginas fotografadas, documentos digitalizados — em um único arquivo ordenado. Você envia as imagens pela API, na sequência que quiser, e recebe um PDF com uma imagem por página, pronto para os portais que só aceitam PDF.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Da galeria bagunçada ao arquivo único
Todo mundo conhece a cena: doze fotos de um contrato tiradas com o celular, prints de comprovante espalhados pela galeria, e um portal que pede "anexe um único arquivo PDF". O serviço recebe as imagens e monta o documento: uma imagem por página, na sequência exata do envio. O que era uma pasta bagunçada vira um arquivo com começo, meio e fim.
A ordem é você quem define
As imagens entram no PDF na ordem em que forem enviadas na chamada — página 1 do contrato primeiro, comprovante mais antigo no início, o critério é seu. Isso importa porque quem recebe o documento lê na sequência: um dossiê de comprovantes fora de ordem cronológica ou um contrato com as páginas trocadas obriga o outro lado a montar o quebra-cabeça.
Onde o PDF único é exigido
Portais do governo, sistemas de RH, bancos em processo de financiamento e plataformas de processo eletrônico costumam aceitar um anexo só, em PDF, com limite de tamanho. Mandar dez imagens avulsas simplesmente não é opção. Consolidar as imagens em um documento é o passo que destrava o envio — e, feito por API, seu sistema resolve isso sozinho para cada usuário.
Preço fixo, pensado para volume
Cada montagem custa US$ 0,002 por chamada, com limite de 25 MB e até 200 imagens (uma por página) por documento. Montar trezentos PDFs de comprovantes custa US$ 0,60; três mil, US$ 6,00. Sem assinatura e sem franquia: o custo acompanha exatamente o seu uso, e o preço em dólar americano está publicado nesta página — o mesmo para quem monta um documento por semana e para quem processa lotes inteiros todos os dias.
Casos de uso
Comprovantes do mês para o contador
Márcia Regina Oliveira junta os prints de Pix e boletos pagos de julho em um único PDF, em ordem cronológica, e manda para a contadora. Um arquivo por mês, em vez de quarenta imagens soltas no WhatsApp.
Contrato fotografado com o celular
Rafael Almeida Costa fotografou as doze páginas de um contrato de aluguel. As fotos viram um PDF na ordem certa, e é esse arquivo que segue para a imobiliária — não uma rajada de imagens.
Documentos de admissão no RH
O RH da Distribuidora Horizonte Verde S.A. recebe de cada candidato fotos de RG, CPF e comprovante de residência. O sistema monta automaticamente um PDF por pessoa, padronizado, antes de arquivar no prontuário digital.
Reembolso de despesas de viagem
Recibos de táxi, hospedagem e refeição fotografados durante a viagem são consolidados em um único PDF anexado ao pedido de reembolso — na ordem das datas, como o financeiro pede.
Perguntas frequentes
As fotos perdem qualidade no PDF?
Cada imagem vira uma página do documento, inteira e sem cortes. O objetivo é preservar a legibilidade do original — comprovante legível entra, comprovante legível sai.
Quais formatos de imagem posso mandar?
Os formatos comuns do dia a dia, como JPG e PNG — o que sai do celular e dos prints funciona.
Quantas imagens de uma vez?
Até 200 imagens por documento (uma por página), respeitando o total de 25 MB por chamada.
Quanto custa montar 300 PDFs de comprovantes?
300 × US$ 0,002 = US$ 0,60. Preço fixo por chamada, publicado em dólar americano, sem mensalidade.
Comprovantes têm dados bancários — é seguro enviar?
As imagens são usadas apenas para montar o documento que você pediu; o resultado fica disponível por tempo limitado e nada é reaproveitado. Tratamento de dados alinhado à LGPD.
Dá para usar sem ser programador?
O serviço funciona via API, pensado para entrar em sistemas e fluxos automatizados. Se você precisa disso no seu processo e não sabe por onde começar, chama a gente no WhatsApp — uma pessoa de verdade orienta a integração, em espanhol ou inglês (pode escrever em português).
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/from-images \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/pdf/from-images", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/from-images",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/from-images", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/from-images", 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
{
"image": "https://ejemplo.com/imagen.jpg"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.from_images",
"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. |
413 | input_too_large | A entrada passou do tamanho máximo desta tarefa. Confira os limites publicados. |