Quand je convertis un fichier pdf en plusieurs fichiers jpg en utilisant
convert -quality 100 file.pdf page_%04d.jpg
J'ai une perte de qualité appréciable.
Cependant, si je fais ce qui suit, il n'y a pas de perte de qualité (perceptible):
Lancez gscan2pdf, choisissez fichier-> importer (et choisissez fichier.pdf). Ensuite, allez dans le répertoire temporaire de gscan2pdf. Il y a beaucoup de fichiers pnm (un pour chaque page du fichier pdf). Maintenant oui
for file in *.pnm; do
convert $file $file.jpg done
Les fichiers jpg résultants sont (à peu près) de la même qualité que le pdf original (c'est ce que je veux).
Maintenant, ma question est la suivante: s’il existe un moyen simple en ligne de commande de convertir le fichier pdf en un tas de fichiers jpg sans perte de qualité notable? (La solution ci-dessus est trop compliquée et prend beaucoup de temps).
Réponses:
Ce que vous entendez par "perte de qualité" n'est pas clair. Cela pourrait signifier beaucoup de choses différentes. Pourriez-vous poster des exemples pour illustrer? Peut-être couper la même section des versions de mauvaise qualité et de bonne qualité (en tant que PNG pour éviter une perte de qualité supplémentaire).
Peut-être devez-vous utiliser
-density
pour faire la conversion à un dpi plus élevé:(Vous pouvez ajouter du préfixe
-units PixelsPerInch
ou-units PixelsPerCentimeter
si nécessaire. Ma copie par défaut est ppi.)Mise à jour: Comme vous l'avez indiqué,
gscan2pdf
(la façon dont vous l'utilisez) n'est qu'un wrapper pourpdfimages
(à partir de Poppler ).pdfimages
ne fait pas la même chose queconvert
quand on donne un PDF en entrée.convert
prend le PDF, le restitue à une certaine résolution et utilise le bitmap obtenu comme image source.pdfimages
cherche dans le PDF des images bitmap incorporées et les exporte dans un fichier. Il ignore simplement les commandes de dessin textuelles ou vectorielles du PDF.Par conséquent, si vous avez un fichier PDF qui encapsule une série de bitmaps, il
pdfimages
sera beaucoup plus efficace de les extraire, car il vous donne les données brutes à leur taille originale. Vous voudrez probablement aussi utiliser l'-j
optionpdfimages
car un PDF peut contenir des données JPEG brutes. Par défaut,pdfimages
tout est converti au format PNM et la conversion de JPEG> PPM> JPEG est un processus avec perte.Alors, essaie
Vous pouvez ou pas besoin de suivre cela avec une
convert
à l'.jpg
étape ( en fonction de ce qui utilisait le format bitmap PDF).J'ai essayé cette commande sur un PDF que j'avais créé moi-même à partir d'une séquence d'images JPEG. Les images JPEG extraites étaient octet par octet identiques aux images source. Vous ne pouvez pas obtenir une qualité supérieure à celle.
la source
convert
est également peu pratique pour les gros PDF. Par exemple, 45 Go de mémoire étaient nécessaires pour traiter un livre de 700 pages de 6 mégapixels. Il a également fallu environ mille fois plus longtemps quepdfimages
.Comme l'a dit l'élève,
pdfimages
c'est une bonne option. De mon expérience à la foisgs
et l'convert
exportation en qualité médiocre, peu importe si vous spécifiez le bon dpi.Mais si le fichier PDF comporte plusieurs calques par page et
pdfimages
ne les extrait pas sous forme d'image distincte, le mieux estinskcape
d'exporter la page telle qu'elle est vue.Ce sont les commandes que j'utilise:
La première commande divise toutes les pages. La deuxième commande convertit page par page en png. Vous pouvez les conserver en png ou simplement les convertir en jpeg
Comparé à
pdfimages
, je trouve quegs
ImageMagick exporte le meilleur en qualité.convert
inkscape
la source
la réponse de @cjm est correcte, mais si vous aimez l'interface graphique et que vous ne souhaitez pas afficher toutes les pages PDF, utilisez simplement gimp pour obtenir une image.
Ouvrez un pdf avec gimp et vous obtiendrez une fenêtre d'importation avec toutes les pages rendues. Choisissez les pages de votre choix et réglez la résolution sur 600 pixels / pouce (j'ai trouvé 300 valeurs trop nettes dans de nombreux cas). Enregistrer au format souhaité avec "Fichier / Exporter"
Quoi qu'il en soit, il doit y avoir un drapeau pour sélectionner les pages souhaitées en ligne de commande.
la source
En regardant le code source de gscan2pdf, j'ai remarqué qu'il utilisait pdfimages. Ainsi
pdfimages file.pdf page
aboutirait àpage-001.ppm, page-002.ppm
etc.la source
Votre question ne dit pas clairement si vous parlez de texte et de graphiques vectoriels dans votre pdf, ou si votre pdf contient des images incorporées.
Après avoir lu en quoi consiste gscan2pdf, je suppose que vos fichiers pdf contiennent (uniquement) des graphiques incorporés.
convert
essentiellement "imprime" votre pdf sans égard pour ce que le contenu est. Comme le suggère @cjm, vous souhaiterez peut-être modifier la densité d'impression. C'est le seul moyen d'augmenter la qualité des graphiques vectoriels.Si vous souhaitez plutôt extraire les images incorporées (un peu comme gscan2pdf semble le faire), devinez que la densité entraîne généralement une perte de qualité ou une qualité supérieure à celle requise (et une perte d'espace disque). La réponse est alors d’extraire l’image plutôt que d’imprimer le pdf. Voir cet article qui préconise fondamentalement l'utilisation de
pdfimages
afin d'extraire des images sans perte de qualité.la source