60 votes

Y a-t-il une méthode en ligne de commande pour diviser un fichier PDF multi-pages en pages individuelles?

J'ai un seul fichier PDF de 6 pages que je veux diviser en six PDF séparés (1.pdf, 2.pdf, 3.pdf) de sorte que chaque fichier produit représente une page de l'entrée. J'aimerais pouvoir effectuer cette tâche simple à partir de la ligne de commande.

88voto

ttq Points 783

Cela peut être réalisé en utilisant pdfseparate. Vous pouvez installer poppler avec homebrew, en tapant brew install poppler. Cela installera également pdfseparate. Pour diviser le PDF document.pdf en pages individuelles 1.pdf, 2.pdf, etc. utilisez :

pdfseparate document.pdf %d.pdf

37voto

user6888062 Points 125

Ouvrez le PDF dans l'aperçu, puis dans le menu Affichage, sélectionnez les miniatures. Sélectionnez les pages que vous souhaitez en maintenant la touche Ctrl enfoncée, puis faites-les glisser et déposez-les sur le bureau.

7voto

The Spooniest Points 141

Si vous êtes intéressé à faire cela à partir de la ligne de commande, vous pouvez consulter le script python splitPDF de Benjamin Han pour accomplir la tâche. Par exemple:

splitPDF.py in.pdf 3 5

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

1voto

Vishal Kumar Points 21

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

pdfextract.py --file-in /chemin/vers/un/pdf --file-out /chemin/vers/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 __name__ == "__main__":
    main()

0voto

Lance Points 279

J'ai commencé à rassembler un outil pour fournir une interface simplifiée aux actions courantes.

Vous pouvez diviser les fichiers PDF en pages individuelles comme ceci :

$ npm install @lancejpollard/act -g
$ act split my.pdf -o outputDirectory

Si rien d'autre, jetez un œil au code source et voyez comment écrire votre propre script pour le faire en JavaScript.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X