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


15

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

Respostas:


17

Sim, você precisará 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 (o ImageMagick ou o GraphicsMagic pode fazer isso usando seus montagesubcomandos).

Não conheço nenhum software que possa fazer isso de uma só vez.

Conversão de PDF para JPG (com Ghostscript): você deseja garantir o melhor resultado possível. Portanto, certifique-se de ajustar as opções da linha de comando para que funcionem para você. Eu começaria com isso:

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

Isso criará JPGs chamados pdffile-001.jpeg , pdffile-002.jpg etc. O parâmetro * -dJPEGQ = 95 "define" Qualidade JPEG "para 95%. Ele usa uma resolução de" 600x600 dpi ". Você pode precisar adicionalmente controle o tamanho da página dos JPGs resultantes, caso o padrão do 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 múltipla para JPG única com montage(ImageMagick ou GraphicsMagick): Omontagecomando (usado neste exemplo é ImageMagick) permite controlar o padrão de lado a lado. Se você usar, por exemplo,-tile 4x3obteria esse 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

Obviamente, montagepossui muitas dezenas de parâmetros adicionais que permitem determinar o plano de fundo, espaçamento, deslocamentos, decoração, etiquetas, 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.)montagePor padrão, usará tamanhos de ladrilho de 120x120 pixels. Se você deseja manter os tamanhos de página originais para cada bloco, é necessário adicionar-geometryà linha de comando. Supondo que você tenhapáginas A4 (= 595x852 pt) em seu PDF e deseje mantê-lo, adicione também um espaçamento de 11 pt na horizontal e 22 pt na direção vertical do ladrilho (além de 4 pontos de borda cinza forte / linhas de moldura ao redor 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

EDIÇÃO 2: (Falta ainda outra dica importante.) Se você não deseja perder a boa qualidade da imagem durante o processo de costura / montagem, criado pela sua conversão de PDF para JPG, adicione também o-quality 100parâmetro à sua linha de comando como esta :

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

Obrigado pela sua resposta. Não vejo parâmetros de geometria no ImageMagick 6.9.9. Além disso, a qualidade da imagem combinada ainda é ruim, literalmente não consigo ler uma palavra.
Geek

2

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

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

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


1
Mas isso NÃO fornecerá JPG de alta qualidade, porque ele usará o Ghostscript com suas configurações padrão (e estas são bastante detalhadas para saída JPG). Fazer isso em duas etapas (e verificar suas páginas JPG primeiro) fornece um controle ideal e também uma boa saída JPG).
Kurt Pfeifle

Você pode alterar as configurações do Ghostscript usando a configuração de densidade do ImageMagick para o PDF e obter resultados igualmente bons. Não bata em mensagens instantâneas se não estiver ciente de como usar suas opções.
erjiang

1
k .: Ei, eu não bati no ImageMagick. E eu sei como usar suas opções, mesmo com a aplicação de perfis de cores ICC ... Mas você não pode passar todas as opções do Ghostscript para montagem. Meu comentário se referiu ao seu comando sugerido, que não foi mencionado -density.
Kurt Pfeifle

Aliás, eu li em outro lugar no SO que o ImageMagick converte internamente de PDF para PS e depois PS para PNG quando você o invoca dessa maneira, então esse é outro motivo para não fazer dessa maneira (duas conversões => qualidade inferior e mais lenta).
Ibrahim
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.