Utilisez convertir pour récupérer une page spécifique d'un fichier PDF?


21

Je sais que je l'ai déjà fait auparavant, donc je suis sûr que c'est possible, j'oublie juste comment le faire. Il existe un moyen de dire à converti de récupérer une page spécifique d'un PDF, et j'aimerais conserver le format de cette page au format PDF.

Réponses:


24

ImageMagick est un outil pour les images bitmap, contrairement à la plupart des PDF. Si vous l'utilisez, il pixellisera les données, ce qui n'est souvent pas souhaitable.

Pdftk peut extraire une ou plusieurs pages d'un fichier PDF.

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

Si vous avez une installation de LaTeX avec PDFLaTeX, vous pouvez utiliser pdfpages . Il y a un wrapper shell pour pdfpages, pdfjam .

pdfjam -o pages_42_43.pdf input.pdf 42,43

Une autre possibilité (exagérée ici, mais utile pour des exigences plus complexes qu'une page) est Python avec la bibliothèque PyPdf .

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

J'étais sur le point de recommander pdftkégalement. Vous voudrez l'utiliser.
Sebastian

pdfjamfonctionne comme un charme, et était déjà installé avec ma distribution LaTeX. C'est très simple à utiliser.
hdl

Merci beaucoup. La page extraite était plus grande que le pdf complet avec pdftkdonc il ne semble pas simplement extraire une page. Le résultat était bien sinon.
Eric Duminil

25

Vous pouvez utiliser la notation convert(1)en indice avec pour "indexer" dans un PDF:

$ convert source.pdf[1] dest.pdf 

La valeur d'index dépend de la façon dont l'exportateur PDF a numéroté les pages. Dans les tests sur les fichiers ici, les chiffres semblent être à base zéro, donc l'exemple ci-dessus vous donne la deuxième page du document. J'ai vu des exemples en ligne où ils affichent des index de lettres à la place, car apparemment, le créateur du PDF a "numéroté" les pages de ce document de cette façon.

Malheureusement, cela ne donne pas de très bons résultats, car ImageMagick suppose que tout est basé sur les pixels, et donc pixellise les images vectorielles, telles que la typographie dans un PDF typique.

Un meilleur outil pour le travail est Ghostscript , que vous avez probablement déjà installé:

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

Cela transmet les données PDF inchangées, car Ghostscript comprend le PDF (un dérivé PostScript) à un niveau beaucoup plus profond que ImageMagick.


2
en fait, ce n'est pas vrai à propos d'imagemagick, si vous définissez le paramètre -density sur quelque chose de 300 à 400, alors le texte sorti du pdf dans le png semblera très bien.
buggedcom

2
Cela ira bien à l'écran, bien sûr, mais si vous allez ensuite imprimer, vous voudrez régler la densité encore plus haut. Et puis, vous risquez d'avoir des problèmes avec la façon dont le RIP de votre imprimante gère les pixels d'anticrénelage gris produits par ImageMagick. Vous pouvez donc choisir à la place de produire en noir et blanc 1 bit à la résolution native de votre imprimante, qui pourrait être de 1200 dpi, ou 1440 dpi ou autre chose, et vous devez le savoir à l'avance pour obtenir une sortie nette. Non, je maintiens ma déclaration: mieux vaut conserver les données PDF sous forme vectorielle aussi longtemps que possible.
Warren Young

@buggedcom que j'ai trouvé -density 300est l'endroit idéal . Quelque chose de plus grand et vous créez d'énormes fichiers temporaires - que vous allez probablement redimensionner de toute façon en miniatures
Mike Causer

2
Vous pouvez également sélectionner une série de pages (par exemple pour faire un gif) comme çasource.pdf[3-6]
texasflood
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.