Converta PDF para imagens em 1920x1080

5

Eu quero converter um PDF em imagens PNG usando convert . As imagens devem caber na proporção de 1920x1080 por ter uma relação x1080 e ter a melhor qualidade.

Aqui estão muitas opções que eu posso usar com o convert: link

  • Primeiro eu tentei a seguinte linha de comando:

convert my.pdf -geometry 1920x1080 -size 1920x1080 -density 1920x1080 my_resized_pdf.png

O resultado do comando me dá uma imagem com boa geometria (763x1080), mas uma qualidade baixa que não quero obter.

  • Euusoalinhadecomandoconvertsemoparâmetrogeometrydaseguinteforma:

convertmy.pdf-size1920x1080-density1920x1080my_resized_pdf.png

Aqualidadedoresultadoéexatamenteoqueeuquero,masaresoluçãonãoéde1920x1080,masde842x595.Suanãoseencaixaexatamentenaalturadarelaçãode1920x1080.

É possível obter imagens PNG com uma relação x1080 e com uma qualidade de 100% a partir de um PDF? Ou é 842x595 a maior taxa para obter uma imagem de qualidade de 100%? Devo definir uma opção de DPI como convert ?

    
por Alrick 22.10.2018 / 11:42

2 respostas

5

Isso envolve alguns testes & erro e, no final, é discutível qual resultado você pode considerar o "melhor resultado". Então, permita-me apenas dar um conselho genérico:

  • use a opção -flatten para se livrar do fundo transparente. A transparência dificulta a avaliação da qualidade real do resultado. Se você precisar da transparência na imagem final, poderá remover -flatten quando tiver certeza da qualidade.

  • use algo como -density 300 para obter um resultado de alta DPI. O principal problema com convert é que ele usa uma densidade muito baixa por padrão (72 DPI). Este parâmetro deve ser especificado antes do arquivo de entrada.

  • O downscaling de uma imagem com DPI alto pode causar borrões adicionais, portanto talvez o cálculo do valor de DPI correto para alcançar a resolução desejada seja o caminho a seguir:

    $ convert -density 100 file.pdf -flatten file100.png
    $ file file100.png
    file100.png: PNG image data, 827 x 1169, 8-bit colormap, non-interlaced
    $ echo $((1080*10000/1169))
    9238
    $ convert -density 92.38 file.pdf -flatten file9238.png
    $ file file9238.png
    file9238.png: PNG image data, 764 x 1080, 8-bit colormap, non-interlaced
    

Não tenho certeza se existe uma maneira de ter convert determinando o valor de DPI "ideal" por si só.

Se você fizer essa pergunta no canal ou fórum do ImageMagick IRC, tenho certeza de que receberá mais alguns conselhos. Isso ajuda se você fornecer o link para o arquivo PDF com o qual está trabalhando. ;)

Você também pode melhorar a qualidade de outras maneiras, por exemplo, removendo as bordas vazias. Você está perdendo muita resolução se metade da página for branca. Existem até mesmo soluções que reenrolam o texto em PDF para aproveitar ao máximo o espaço disponível na tela (por exemplo, k2pdfopt ).

Finalmente, tente outros programas. Esta é uma questão de opinião, mas eu prefiro usar o Inkscape ou o GhostScript diretamente. ImageMagick tem caracteres "colados", o Inkscape tem um resultado mais balanceado, e o GhostScript permite renderizar uma imagem de pixel puro e livre de borrões (se é algo que você gosta - use pngalpha para a versão borrada, que é praticamente idêntica a convert ).

ImageMagick:

Inkscape:

GhostScript:

gs-r92.38-sDEVICE=png48-sOutputFile=ghostscript.pngfile.pdf

    
por 22.10.2018 / 13:47
1

Tente:

convert -resize 1920x1080  in.pdf   out.png

Se o seu pdf tiver 10 páginas, você receberá 10 arquivos out-1.png ... out-10.png

Por favor, ignore esta resposta : embora seja útil para o redimensionamento de arquivos raster, está produzindo resultados muito borrados para arquivos PDF (baixa DPI melhorada).

    
por 22.10.2018 / 12:00