Vous utilisez Ghostscript pour convertir un PDF de plusieurs pages en un seul JPG?

15

Je sais que Ghostscript peut convertir des PDF en JPG et, dans le cas d'un PDF de plusieurs pages, peut extraire chaque page en un JPG individuel. Mais est-il possible de les extraire dans un JPG, de sorte que les pages soient collées les unes au-dessous des autres, par exemple la moitié supérieure du JPG est la page 1, la moitié inférieure est la page 2? Ou dois-je utiliser un autre programme (et ImageMagick peut-il le faire?) Pour combiner les pages JPG en une seule image?

Andrew
la source

Réponses:

17

Oui, vous devrez convertir chaque page PDF en un seul fichier JPG (Ghostscript peut le faire).

Assemblez ensuite les fichiers JPG résultants à l'aide d'un autre programme ( ImageMagick ou GraphicsMagic peuvent le faire à l'aide de leurs montagesous-commandes).

Je ne connais aucun logiciel qui puisse le faire en une seule fois.

Conversion de PDF en JPG (avec Ghostscript): vous voudrez vous assurer d'obtenir le meilleur résultat possible. Assurez-vous donc de modifier les options de ligne de commande afin qu'elles fonctionnent pour vous. Je commencerais par ceci:

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

Cela créera des fichiers JPG appelés pdffile-001.jpeg , pdffile-002.jpg etc. Le paramètre * -dJPEGQ = 95 "définit" Qualité JPEG "à 95%. Il utilise une résolution de" 600x600 dpi ". Vous devrez peut-être en plus contrôler la taille des pages des JPG résultants au cas où la valeur par défaut de votre Ghostscript ne correspondrait pas à vos besoins:

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

assemblage JPG multiple à simple avec montage(ImageMagick ou GraphicsMagick): Lamontagecommande (utilisée dans cet exemple est ImageMagick) vous permet de contrôler le motif de mosaïque. Si vous utilisez par exemple,-tile 4x3vous obtiendrez cette disposition d'imposition:

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

Vous pouvez utiliser cette commande pour assembler 12 JPG individuels en un seul:

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

Bien sûr, montagedispose de plusieurs dizaines de paramètres supplémentaires qui vous permettent de déterminer l'arrière-plan, l'espacement, les décalages, la décoration, les étiquettes, la rotation, le recadrage, la légende, etc. pour l'entrée et le JPG résultant.


EDIT: (J'avais déjà voulu donner cet indice dans ma réponse d'origine, mais j'ai oublié.)montagePar défaut, les tailles de tuiles de 120x120 pixels seront utilisées. Si vous souhaitez conserver les tailles de page d'origine pour chaque vignette, vous devez l'ajouter-geometryà la ligne de commande. En supposant que vous aviez despages A4 (= 595x852 pt) dans votre PDF et que vous souhaitez conserver cela, mais ajoutez également un espacement de 11 pt à l'horizontale et de 22 pt à la direction verticale du pavage (plus 4 pt de bordure / cadre gris fort autour de chaque tuile), procédez comme suit:

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

EDIT 2: (Manqué encore un autre indice important.) Si vous ne voulez pas perdre la bonne qualité d'image pendant le processus d'assemblage / montage, que votre conversion PDF en JPG a créé, ajoutez également le-quality 100paramètre à votre ligne de commande comme ceci :

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    -quality 100 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg
Kurt Pfeifle
la source
Merci pour votre réponse. Je ne vois pas de paramètre de géométrie dans ImageMagick 6.9.9. De plus, la qualité d'image de l'image combinée est toujours minable, je ne peux littéralement pas en lire un mot.
Geek
2

Étant donné qu'ImageMagick prend en charge GhostScript intégré, vous pouvez tout faire en une seule fois:

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

qui prendra chaque page et en créera un long jpeg de bout en bout.

erjiang
la source
1
Mais cela ne vous donnera PAS de JPG de haute qualité, car il utilisera Ghostscript avec ses paramètres par défaut (et ceux-ci sont assez timides pour la sortie JPG). Le faire en 2 étapes (et vérifier d'abord vos pages JPG) vous donne un contrôle optimal, et cela vous donne également une assez bonne sortie JPG).
Kurt Pfeifle
Vous pouvez modifier les paramètres de Ghostscript en utilisant le paramètre de densité d'ImageMagick pour le PDF et obtenir des résultats aussi bons. Ne frappez pas la messagerie instantanée si vous ne savez pas comment utiliser ses options.
erjiang
1
k .: Hé, je n'ai pas frappé ImageMagick. Et je sais comment utiliser ses options, même en appliquant des profils de couleurs ICC ... Mais vous ne pouvez pas passer toutes les options de Ghostscript au montage. Mon commentaire faisait référence à votre commande suggérée, qui ne l'a pas mentionné -density.
Kurt Pfeifle
Soit dit en passant, j'ai lu ailleurs sur SO qu'ImageMagick convertit en interne de PDF en PS puis PS en PNG lorsque vous l'invoquez de cette façon, c'est donc une autre raison de ne pas le faire de cette façon (deux conversions => de qualité inférieure et plus lente).
Ibrahim