63 votes

Comment convertir un PDF d'une page en un PDF de 2 pages par feuille ?

Je voudrais imprimer un PDF de manière à ce que les deux premières pages se trouvent au recto, la troisième et la quatrième au verso, et ainsi de suite.

-----------------          -----------------
|       |       |          |       |       |
|       |       |          |       |       |
|   1   |   2   |          |   3   |   4   |    . . .
|       |       |          |       |       |
|_______|_______|          |_______|_______|

 page 1 - front             page 1 - back

Comme mon imprimante sous Linux ne prend pas en charge l'impression recto-verso manuelle, je me suis dit que je pourrais peut-être éditer le fichier PDF de la même manière.

Mais comment ?

34voto

Brian Frost Points 6544

En plus de ce qui a été mentionné, pdfjam-extras comprend un outil de ligne de commande, pdfnup qui fait cela. (Il utilise le paquet pdfpages pour PDFLaTeX en dessous, que vous pouvez également utiliser).

Si vous préférez une interface graphique, jPDFtweak est une autre option.

30voto

Joaquin Points 301

Utilisez pdfnup :

$ pdfnup file.pdf

Cela créera un nouveau fichier pdf exactement comme vous l'avez demandé.

12voto

C'est une question suffisamment ancienne pour penser que les options dont nous disposons aujourd'hui étaient absentes à l'époque, mais elle mérite peut-être une solution actualisée.

Les visualisateurs de pdf de Linux utilisent généralement le options/propriétés d'impression pour définir la mise en page, et là, vous pouvez imprimer plusieurs pages par feuille/par côté. L'idée est de les utiliser pour imprimer vers un fichier en PDF .

Evince peut le faire, également qpdfview . Plus ici.


qpdfview

enter image description here

enter image description here


Evince

enter image description here


PDF Studio Viewer

enter image description here

Les autres visionneurs de pdf doivent avoir des options similaires.

7voto

Diejmon Points 111

Pour quiconque souhaite prendre un pdf de 1 ou 2 pages et le transformer en un pdf avec 2 copies côte à côte en vue paysage ( idéal pour l'impression de prospectus ), faites :

  1. Transformez l'entrée d'un pdf de 1 ou 2 pages en une sortie qui contient une copie dupliquée de ces pages (pdf de 1 page --> pdf de 2 pages, pdf de 2 pages --> pdf de 4 pages, etc) :

     pdfunite in.pdf in.pdf out.pdf
  2. Combinez ce pdf dupliqué en un pdf de 2 pages par côté dans un paysage, pour imprimer des prospectus par exemple :

     pdfnup out.pdf

Ou ( recommandé ) sur une seule ligne :

pdfunite in.pdf in.pdf out.pdf && pdfnup out.pdf

Notez que out.pdf est le entrée à pdfnup . Le fichier de sortie résultant de pdfnup s'appellera " out-nup.pdf ".

De plus, observez la sortie de l'outil pdfnup et vous verrez la forme verbeuse de la commande qu'il exécute actuellement, ce qui vous donne un aperçu des options que vous pouvez lui passer. Apparemment, pdfnup 用途 pdfjam sous le capot :

pdfjam : Appel effectif pour cette exécution de pdfjam :

/usr/bin/pdfjam --suffix nup --nup '2x1' --landscape -- out.pdf -

Beispiel:

PDF original (1 pg régulière en vue Portrait), " en.pdf " : enter image description here

PDF final (2 pgs côte à côte en mode paysage), " out-nup.pdf " :

  • peuvent maintenant être coupés en deux au milieu pour être distribués comme prospectus. enter image description here

Fonction Bash simple : make_flyer

Copiez et collez cette fonction bash au bas de votre fichier "~/.bashrc" afin d'avoir accès à une commande simple et facile d'utilisation make flyer :

# Description: outputs a landscape-oriented flyer pdf ("my/pdf/input--flyer.pdf") for each 1 or more pg input pdf ("my/pdf/input.pdf")
#   - 1-pg input PDFs are converted to a 1-sided landscape, printable flyer that you cut down the center to make 
#     2 flyers
#   - 2-pg input PDFs are converted to a 2-sided landscape, printable flyer (flip on short edge when printing 
#     double-sided), and also cut down the middle to make 2 flyers
#   - **3+ pg input PDFs**: using `pdfnup` directly in this case would make more sense, since this function will
#     otherwise unneccessarily create 2 copies
#   - 3 and 4-pg input PDFs are converted to a single piece of paper, double-sided, flipped on short edge, x 2 copies. 
#     No cutting is necessary
#   - 5+ pg input PDFs simply require half as much paper to print is all since you get 2 pages per side of paper;
#     they do NOT print like booklets, but rather just as a landscape-printed, flipped-on-short-edge bundle of pages
#     (like a deck of slides). You get *2 copies* per print though, so just print half the pages. 
make_flyer() {
    num_args=$# # see: https://stackoverflow.com/questions/4423306/how-do-i-find-the-number-of-arguments-passed-to-a-bash-script/4423321#4423321
    suffix="flyer"

    loop_cnt=0
    for inputpdf in "$@"
    do
        ((loop_cnt++))
        echo "==== CONVERTING PDF $loop_cnt OF $num_args ===="
        echo "     INPUT:  \"$inputpdf\""

        # Strip off the .pdf extension from the input path, while retaining the rest of the path
        # - See: https://stackoverflow.com/questions/12152626/how-can-i-remove-the-extension-of-a-filename-in-a-shell-script/32584935#32584935
        input_path_base="$(echo "$inputpdf" | rev | cut -f 2- -d '.' | rev)"
        input_file_base="$(basename "$inputpdf" .pdf)"
        temp_pdf="${input_path_base}-.pdf" # is "input_path_base-.pdf"

        echo "     OUTPUT: \"$(pwd)/${input_file_base}--${suffix}.pdf\""

        # Convert a single 1-pg pdf into a temporary 2-pg pdf
        pdfunite "$inputpdf" "$inputpdf" "$temp_pdf"

        # Lay out the temporary 2-pg pdf into a side-by-side 1-sided flyer to print; creates "input_path_base--flyer.pdf"
        # Note that `pdfnup` places the output from this operation in the location from where you call this script
        # (ie: in your `pwd` [Present Working Directory])!--NOT the location where temp_pdf is located!
        pdfnup "$temp_pdf" --suffix $suffix

        # Delete the temporary 2-pg pdf, called "input_path_base-.pdf", thereby leaving only the original 
        # "input_path_base.pdf" and the new "input_path_base--flyer.pdf"
        rm "$temp_pdf"
    done
}
alias make_flyer_help='echo -e "Ex usage: make_flyer \"path/to/inputpdf.pdf\" - Creates a landscape-side-by-side flyer version called \"inputpdf--flyer.pdf\"\n          *in your pwd* from a 1 or 2 pg input pdf called \"path/to/inputpdf.pdf\". Accepts multiple arguments. Ex:\n          make_flyer \"path/to/inputpdf1.pdf\" \"path/to/inputpdf2.pdf\""'

Exemple d'utilisation :

make_flyer "path/to/inputpdf1.pdf" "path/to/inputpdf2.pdf"

Voir les informations d'aide :

make_flyer_help

Sortie :

$ make_flyer_help   
Ex usage: make_flyer "path/to/inputpdf.pdf" - Creates a landscape-side-by-side flyer version called "inputpdf--flyer.pdf"  
          *in your pwd* from a 1 or 2 pg input pdf called "path/to/inputpdf.pdf". Accepts multiple arguments. Ex:  
          make_flyer "path/to/inputpdf1.pdf" "path/to/inputpdf2.pdf"

Références :

  1. https://superuser.com/a/948095/425838
  2. https://stackoverflow.com/a/11280219/4561887

En rapport :

  1. https://askubuntu.com/questions/214538/printing-in-booklet-format/1095789#1095789

Références Bash :

  1. Bash Comment passer des arguments dans une fonction bash : https://bash.cyberciti.biz/guide/Pass_arguments_into_a_function
  2. Bash Concaténation de chaînes de caractères : https://linuxize.com/post/bash-concatenate-strings/
  3. Bash exécute un cmd stocké sous forme de chaîne ! https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
  4. Bash itère sur toutes les entrées d'un cmd : https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script/255913#255913
  5. Bash passant des paramètres à la fonction : https://stackoverflow.com/questions/6212219/passing-parameters-to-a-bash-function/6212408#6212408
  6. Comment convertir un pdf de 1 page en un flyer [mes propres réponses] : Comment convertir un PDF d'une page en un PDF de 2 pages par feuille ?

1voto

horatio Points 3543

Il existe des outils en ligne de commande gratuits et open source pour convertir les PDF en tablettes de lecteur, tablettes de livret, etc.

J'ai perdu l'application que j'utilisais, donc je ne peux pas vous aider, mais en faisant une recherche rapide, j'ai trouvé un programme appelé pdfshuffler ce qui pourrait être ce dont vous avez besoin. Il y a une interface, donc peu de chances qu'il soit automatique, mais c'est un frontal pour Python-pyPdf.

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