Usando o Ghostscript para converter PDF de várias páginas em um único JPG?

13

Eu sei que o Ghostscript pode converter PDFs em JPGs e, no caso de um PDF de várias páginas, pode copiar cada página para um JPG individual. Mas é possível tê-lo ripado para um JPG, para que as páginas sejam coladas uma abaixo da outra, por ex. a metade superior do JPG é a página 1, a metade inferior é a página 2? Ou eu tenho que usar outro programa (e o ImageMagick pode fazer isso?) Para combinar as páginas JPG em uma imagem?

    
por Andrew 27.07.2010 / 20:52

2 respostas

15

Sim, você terá que converter cada página PDF em um único arquivo JPG (o Ghostscript pode fazer isso).

Em seguida, junte os arquivos JPG resultantes usando outro programa ( ImageMagick ou GraphicsMagic pode fazer isso usando seus subcomandos montage .

Não tenho conhecimento de nenhum software que possa fazer isso de uma só vez.

conversão de PDF para JPG (com Ghostscript): Você quer ter certeza de obter o melhor resultado possível. Portanto, certifique-se de ajustar as opções de linha de comando para que elas funcionem para você. Eu começaria com isto:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

Isto irá criar JPGs chamados pdffile-001.jpeg , pdffile-002.jpg etc. O parâmetro * -dJPEGQ = 95 "define" JPEG Quality "como 95 %. Ele usa uma resolução de "600x600 dpi". Você pode precisar controlar adicionalmente o tamanho da página dos JPGs resultantes, caso o padrão do seu Ghostscript não atenda às suas necessidades:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -dDEVICEWIDTHPOINTS=800 ^
    -dDEVICEHEIGHTPOINTS=600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

ou

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

costura de vários pixels para JPG com montage (ImageMagick ou GraphicsMagick): O comando montage (usado neste exemplo é o ImageMagick) permite controlar o padrão lado a lado. Se você usa, por exemplo, -tile 4x3 você obteria este layout de imposição:

1  2  3  4    
5  6  7  8    
9 10 11 12    

Você pode usar este comando para juntar 12 JPGs individuais em um:

montage ^
    -border 0  ^
    -tile 4x3  ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg  ^
    c:/path/to/final.jpg

Naturalmente, montage tem muitas dezenas de parâmetros adicionais que permitem determinar o fundo, espaçamento, deslocamentos, decoração, rótulos, rotação, corte, legenda etc. para a entrada e o JPG resultante.

EDIT: (eu queria dar essa dica já na minha resposta original, mas esqueci.) montage por padrão usará tamanhos de ladrilhos de 120x120 pixels. Se você deseja manter os tamanhos de página originais para cada bloco, será necessário adicionar -geometry à linha de comando. Supondo que você tenha A4 (= 595x852 pt) páginas no seu PDF, e deseja manter isso, mas também adicione um espaçamento de 11pt na horizontal e 22 pt na direção vertical da peça (mais 4 linhas de borda / quadro cinza strongs em torno de cada bloco), faça o seguinte:

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

EDIT 2: (faltou ainda outra dica importante.) Se você não quer perder a boa qualidade de imagem durante o processo de costura / montagem, qual o seu PDF- to-JPG conversão tinha criado, em seguida, também adicionar o parâmetro -quality 100 à sua linha de comando como este:

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    -quality 100 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg
    
por 27.07.2010 / 22:03
2

Como o ImageMagick tem suporte para o GhostScript integrado, você pode fazer tudo de uma só vez:

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

, que pegará todas as páginas e criará um longo jpeg delas de ponta a ponta.

    
por 27.07.2010 / 22:31