web-dev-qa-db-fra.com

Comment scinder rapidement un fichier PDF en une seule page (à partir de la ligne de commande du terminal)?

J'ai un fichier PDF de 6 pages que je souhaite scinder en 1.pdf, 2.pdf, 3.pdf, etc ...

La prévisualisation ne fonctionne pas de manière surprenante (à moins que quelque chose me manque).

J'aimerais pouvoir effectuer cette tâche simple à partir de la ligne de commande, mais à ce stade, je prendrai tout ce qui permet d'accomplir ce travail (sans télécharger de logiciel sommaire).

FYI http://users.skynet.be/tools/ ne fonctionne pas comme annoncé.

21
user391339

Ouvrez le fichier PDF dans l'aperçu, puis sélectionnez les vignettes dans le menu Affichage. Ctrl sélectionnez les pages que vous voulez maintenant faites glisser et déposez-les sur le bureau.

19
eleethesontai

Ceci peut être réalisé en utilisant pdfseparate. Vous pouvez installer poppler avec homebrew, par brew install poppler. Cela installera également pdfseparate. Pour scinder le PDF document.pdf en une seule page 1.pdf, 2.pdf, etc., utilisez:

pdfseparate document.pdf %d.pdf
33
ttq

Si cela vous intéresse à partir de la ligne de commande, vous pouvez consulter le script Python splitPDF de Benjamin Han pour effectuer le travail. Par exemple:

splitPDF.py in.pdf 3 5

diviserait le fichier in.pdf en 3 fichiers, en se divisant aux pages 3 et 5.

4

Si vous voulez extraire une plage de pages, vous pouvez utiliser le script suivant que vous appelez comme ceci (en supposant que vous l'enregistrez dans le fichier pdfextract.py quelque part sur le chemin PATH de votre système, par exemple/usr/local/bin, et lui attribuez l'exécution. permission avec chmod 744 pdfextract.py):

pdfextract.py --file-in/chemin/à/grand/pdf - fichier-out/chemin/à/nouveau/pdf --start --stop

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import argparse
import os
import subprocess as sp


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--file-in', required=True, type=str, dest='file_in')
    parser.add_argument('--file-out', required=True, type=str, dest='file_out')
    parser.add_argument('--start', required=True, type=int, dest='start', default=-1)
    parser.add_argument('--stop', required=True, type=int, dest='stop', default=-1)

    args = parser.parse_args()
    assert os.path.isfile(args.file_in)
    assert not os.path.isfile(args.file_out)

    # remove temporary files
    for el in os.listdir('/tmp'):
        if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
            os.remove(os.path.join('/tmp', el))

    sp.check_call('pdfseparate -f {:d} -l {:d} {:s} /tmp/pdfseparate-%d.pdf'.format(args.start, args.stop, args.file_in), Shell=True)

    cmd_unite = 'pdfunite '
    for i in range(args.start, args.stop + 1):
        cmd_unite += '/tmp/pdfseparate-{:d}.pdf '.format(i)
    cmd_unite += args.file_out
    sp.check_call(cmd_unite, Shell=True)

    # remove temporary files
    for el in os.listdir('/tmp'):
        if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
            os.remove(os.path.join('/tmp', el))


if __== "__main__":
    main()
1
Konstantin

Pour une autre alternative, voir cette réponse . Ceci utilise les outils de ligne de commande ImageMagick .

convert x.pdf -quality 100 -density 300x300 x-%04d.pdf

Cependant, vous devez faire attention à la qualité.

0
pheon