O primeiro limite define a saída

O exemplo oficial PDF.js usa viewport de escala 1 e um fator. Moyoutil aplica a fórmula e arredonda para baixo. Exemplos usam unidades padrão e nenhuma rotação. CropBox, rotação ou unidades personalizadas podem mudar o viewport.

scale = min(DPI / 72,
            3072 / max(width, height),
            sqrt(8000000 / (width * height)))
outputWidth  = floor(width * scale)
outputHeight = floor(height * scale)

2000×1000 gerou 3072×1536px em 144 e 216 DPI: o lado maior limita a escala a 1.536. 3000×3000 gerou 2828×2828px em todos os ajustes. Aqui oito milhões limitam primeiro; o resultado inteiro contém 7,997,584 pixels.

Dimensões de saída por DPI para dois tamanhos
Diagrama próprio de cálculos. pt indica páginas de unidades padrão; px são resultados reproduzidos da função. Não é prévia de arquivo nem comparação de qualidade.

PDF.js: viewport and rendering

Confira antes do próximo passo

612×792 gerou 612×792, 1224×1584 e 1836×2376px em 72, 144 e 216 DPI sem limites. DPI não é sempre ignorado. Confira dimensões baixadas de páginas grandes. O cálculo não garante metadados de impressão com o mesmo DPI.

Guarde o PDF para detalhes de desenhos grandes e considere ferramentas para regiões da página. Dividir PDF no Moyoutil separa páginas, não recorta regiões. Comprimir imagens não elimina esse limite.

Perguntas frequentes

PNG evita o limite?

Não. PNG e JPEG usam o mesmo cálculo prévio. Formato e limites de pixels são independentes.