Processar uma pasta inteira de PDFs: script e limites
Como comprimir uma pasta inteira de PDFs com um script, contar as operações do plano antes de começar e escolher o nível de compressão certo para cada tipo.
Para comprimir uma pasta inteira de PDFs, use um laço que envia um arquivo por vez à API e grava cada resultado numa pasta de saída. O que decide se o lote termina no dia é a cota: cada arquivo comprimido gasta uma operação. Conte os arquivos antes de começar e compare com o limite do seu plano.
Conte as operações antes de começar
A compressão aceita um arquivo por chamada, e isso muda a conta. Uma pasta com 40 PDFs são 40 operações, não uma. No plano sem conta, o limite é de 3 operações por dia; no grátis, 10; no Pro, 500. Com 40 arquivos, o plano grátis precisa de quatro dias, e o Pro termina no mesmo dia com folga.
O limite de tamanho também é por arquivo, e não pela pasta inteira. Sem conta, cada PDF pode ter até 25 MB; no grátis, 50 MB; no Pro, 200 MB. Uma pasta com um arquivo de 60 MB falha no grátis mesmo que todos os outros passem, então separe esse arquivo antes.
| Plano | Operações por dia | Tamanho por arquivo |
|---|---|---|
| Sem conta | 3 | 25 MB |
| Conta grátis | 10 | 50 MB |
| Pro | 500 | 200 MB |
Escolha o nível pelo tipo de PDF
Uma pasta quase sempre mistura tipos de arquivo, e o nível de compressão deve acompanhar o tipo. Em um teste com uma página A4 de exemplo, os resultados foram estes, e variam com o conteúdo de cada documento:
| Tipo de página | Original | Médio | Forte |
|---|---|---|---|
| Escaneada a 300 DPI, em tons de cinza | 2,5 MB | 462 KB | 157 KB |
| Foto colorida a 300 DPI | 4,7 MB | 87 KB | 42 KB |
| Texto gerado do Word | 3 KB | 3 KB | 3 KB |
O nível leve, que mantém 300 DPI, não reduziu nenhuma dessas páginas no teste, porque a saída não ficaria menor que a entrada. Quando a saída não fica menor, a API devolve o original. Para um lote de escaneados, o nível médio é o ponto de equilíbrio. Para um lote que precisa caber num limite de tamanho, use level=alvo com targetMb: o servidor tenta leve, média e forte e devolve a primeira que couber. Veja o guia de curl na linha de comando para esse caso.
O script em um laço
No macOS e no Linux, o laço percorre os PDFs da pasta, cria a pasta de saída e envia cada arquivo com o campo file e o nível no campo level, usando a chave que está em AJUSTAPDF_KEY. O código HTTP vem do curl com a opção -w. Quando não é 200, o corpo da resposta é um JSON de erro: o script o anota num arquivo de falhas, apaga o arquivo de saída e, se o erro for de cota esgotada, para o lote.
mkdir -p saida
for f in *.pdf; do
status=$(curl -sS -o "saida/$f" -w "%{http_code}" -X POST https://api.ajustapdf.com/pdf/compress \
-H "Authorization: Bearer $AJUSTAPDF_KEY" -F "file=@$f" -F "level=media")
if [ "$status" != "200" ]; then
echo "$f: HTTP $status $(cat "saida/$f")" >> falhas.txt
parar=$(grep -c QUOTA_EXCEEDED "saida/$f")
rm -f "saida/$f"
if [ "$parar" != "0" ]; then break; fi
fi
doneNo Windows, o mesmo laço roda no PowerShell com o curl.exe, e a opção -f basta para saber se cada chamada deu certo:
New-Item -ItemType Directory -Force saida | Out-Null
Get-ChildItem *.pdf | ForEach-Object {
curl.exe -f -sS -X POST https://api.ajustapdf.com/pdf/compress `
-H "Authorization: Bearer $env:AJUSTAPDF_KEY" `
-F "file=@$($_.FullName)" -F "level=media" -o "saida\$($_.Name)"
if ($LASTEXITCODE -ne 0) { Add-Content falhas.txt $_.Name }
}O arquivo de saída tem o mesmo nome do original, mas dentro da pasta saida, para que nada seja sobrescrito. Confira a pasta depois do lote: os arquivos com erro não aparecem na saída, e o registro de falhas diz quais são. Para acompanhar a cota, grave os cabeçalhos de cada resposta com a opção -D e leia x-quota-used. Quem prefere montar o laço com uma ferramenta visual pode usar o guia de automação com n8n, Make ou Zapier.
Cuidados com formulários e fotos
A compressão achata os formulários. Campos preenchidos viram texto fixo e os campos deixam de existir, o que é bom para envio mas ruim para um modelo que alguém ainda vai preencher. Separe os modelos em uma pasta à parte e não os comprima junto com os preenchidos.
Os PDFs gerados a partir de fotos de celular dependem do tamanho de página da conversão. Em A4 ou Carta, o padrão da ferramenta de imagem para PDF, a foto mantém todos os pixels (uma foto de 12 megapixels fica perto de 390 DPI em A4), e comprimir no nível médio ou forte reduz o arquivo de verdade. Na opção “do tamanho de cada imagem”, a foto fica em cerca de 72 DPI e a compressão ganha pouco. O guia uma foto gigante deixou o PDF pesado ajuda a achar a página culpada.
Quando um script não compensa
Se a pasta tem cinco ou dez arquivos, enviar um por um no navegador costuma ser mais rápido do que escrever o laço. O script compensa quando a tarefa se repete, quando a pasta tem dezenas de arquivos ou quando a compressão precisa acontecer toda semana sem intervenção. Para o uso pontual, a ferramenta de comprimir PDF escolhe o nível na tela e mostra o tamanho antes e depois. Quem prefere processar a pasta localmente, em Python, compara as bibliotecas em pypdf, pikepdf ou PyMuPDF.
Quando a pasta tem documentos de terceiros, como contratos de clientes ou laudos, a responsabilidade pelo envio é de quem processa. Cada arquivo é apagado do servidor logo depois que o resultado sai, mas isso não dispensa checar a pasta antes de rodar o lote. Para a referência completa das rotas e dos campos, veja o guia da API para desenvolvedores.
Checklist antes de rodar
- Conte os PDFs e compare com a cota diária do seu plano.
- Separe arquivos acima do limite por arquivo do seu plano.
- Separe modelos de formulário dos preenchidos, por causa do achatamento.
- Teste com três arquivos e abra cada resultado antes de rodar o resto.
Perguntas frequentes
Como comprimir todos os PDFs de uma pasta de uma vez?
Pelo navegador, cada arquivo é uma operação; pelo terminal, um laço envia um PDF por vez à rota /pdf/compress da API, com a chave na variável AJUSTAPDF_KEY. A compressão aceita um arquivo por chamada, então uma pasta com 40 PDFs gasta 40 operações da sua cota diária.
Quantos PDFs posso processar por dia no plano grátis?
No plano com conta grátis, são 10 operações por dia, e cada arquivo comprimido conta uma. No plano sem conta, são 3. O Pro permite 500 por dia. Como a compressão é um arquivo por chamada, a quantidade de PDFs da pasta é a quantidade de operações que você precisa ter disponível.
Por que alguns PDFs da pasta não ficam menores depois de comprimir?
Porque o peso deles não está em imagens que possam ser reduzidas. Um PDF só de texto, gerado do Word, já é pequeno e volta igual, porque a ferramenta devolve o original quando o resultado não fica menor. O mesmo vale para um PDF de fotos montado do tamanho de cada imagem, em que a foto já está perto de 72 DPI.
A compressão em lote apaga campos de formulário?
Sim. A compressão achata os formulários: o valor preenchido vira texto fixo da página e o campo some. Em uma pasta com formulários, separe esses arquivos e confira o resultado, porque quem for preencher depois não vai encontrar os campos.