Come convertire un PDF di 1 pagina in un PDF di 2 pagine per foglio?


44

Vorrei stampare un PDF in modo che sul davanti della prima pagina ci siano le prime due pagine, sul retro la terza e la quarta e così via.

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

 page 1 - front             page 1 - back

Poiché la mia stampante che utilizza Linux non supporta la stampa duplex manuale che avevo pensato, forse avrei potuto modificare il pdf in un modo appropriato.

Ma come?


Non penso che sia possibile, hai solo il pdf?
Michael K,

Questo è possibile su Linux usando pstops dal pacchetto psutils e / o pdftk. Quale sistema operativo stai utilizzando?
ricorre il

@Ivo Flipse: har, ho pensato esattamente lo stesso :) quindi, il tuo commento ottiene anche un +1.
Akira,

@Ivo Flipse, @rems: puoi aggiungere più arte ASCII qui: superuser.com/questions/54054/… e superuser.com/questions/235074/… ... @mokasin: questi link potrebbero darti un'idea di come risolvere l'attività che hai richiesto.
Kurt Pfeifle,

Risposte:


23

Oltre a quanto menzionato, PDFjam include uno strumento da riga di comando, pdfnupche lo fa. (Utilizza il pacchetto pdfpages per PDFLaTeX sottostante, che puoi anche usare.)

Se si preferisce una GUI, jPDFtweak è un'altra opzione.


Perfezionare. Proprio quello che stavo cercando.
mokasin,

1
L'utilizzo di esempio: pdfnup --nup 2x1 mypdf.pdf. Stampa 2 pagine affiancate per foglio in una vista orizzontale, da stampare capovolte sul bordo corto. Vedi man pdfnupper qualche dettaglio in più.
Gabriel Staples,

Ho deciso di aggiungere anche una risposta: come convertire 1 pdf da 1 pg in una visualizzazione orizzontale con 2 copie duplicate sulla stessa pagina (ideale per stampare volantini): superuser.com/a/1452008/425838
Gabriel Graffette

24

Usa pdfnup:

$ pdfnup file.pdf

Questo creerà un nuovo file pdf esattamente come richiesto.


pdfnup mostra le opzioni della riga di comando utilizzate con pdfjam e quindi puoi modificare da lì. (ad esempio: se non si desidera avere un paesaggio. È possibile rimuovere l'opzione --landscape quando si chiama pdfjam)
Trevor Boyd Smith

6
Più esattamente pdfnup --nup 2x1 --suffix test file.pdfcreerà un file-test.pdfcon 2 pagine in 1.
solitario

1
sudo apt install texlive-extra-utilsper installare questi programmi di utilità su Ubuntu.
Sarke,

Ho una singola pagina a4 che voglio stampare in due copie di a5 per foglio. Come posso farlo? Gli esempi di utilizzo di 'pdfnup' sopra non duplicano la prima pagina, ma rendono vuota la seconda parte a5 del primo foglio a4.
Nordlöw,

2

Questa è una domanda abbastanza vecchia per pensare che le opzioni che abbiamo ora erano assenti al momento, ma forse merita una soluzione aggiornata.

I visualizzatori pdf Linux di solito usano le opzioni / proprietà di stampa per impostare il layout della pagina, e lì puoi stampare più pagine per foglio / lato. L'idea è di usarli per stampare su file come PDF .

Evince può farlo, anche qpdfview . Più qui


qpdfview

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


manifestare

inserisci qui la descrizione dell'immagine


PDF Studio Viewer

inserisci qui la descrizione dell'immagine

Gli altri visualizzatori di pdf devono avere opzioni simili.


1

Sono disponibili strumenti da riga di comando freeware e open source per convertire i PDF in spread di lettura, diffusione di opuscoli ecc.

Ho perso l'app che stavo usando, quindi nessun aiuto lì, ma da una rapida ricerca vedo un programma chiamato pdfshuffler ( http://sourceforge.net/projects/pdfshuffler/ ) che potrebbe essere quello che ti serve. Ha una gui, quindi non è probabile che sia automagica, ma è un front-end per un altro strumento ...


0

Se si dispone della funzione di stampa su file. stampa sul file con due pagine per impostazione di pagina e con pagine dispari. ripetere il processo con pagine pari. Ora stampa quelli dispari, inverti i fogli stampati e stampa il file delle pagine pari.


0

@mokasin: non hai detto quale lettore PDF stai utilizzando. Se si utilizza la versione Linux di Acrobat / Adobe Reader: esiste un'opzione per stampare "2-up" direttamente nella finestra di dialogo di stampa. Puoi anche scegliere di stampare solo le pagine pari o dispari, quindi la combinazione di questo ti aiuterà a ottenere il risultato desiderato.


0

Questo software che ho testato sul sistema operativo Solaris 11.2 può creare quello schema che si chiama 2-up, di solito utilizzato per distribuire in aule o riunioni. È possibile produrre altri schemi; ad esempio, distribuire con 3 o 4 o più pagine su un foglio o su entrambi i lati di un foglio. Può essere eseguito da un terminale in quanto è un file JAR o semplicemente eseguire la GUI per un facile accesso. Oltre a Solaris sono compatibili anche altre distribuzioni Linux, che eseguono il software come "eseguibile" con privilegi di superutente. Fai attenzione a non utilizzare "Apri l'archivio". Funziona anche su qualsiasi Windows e Mac in cui è già installato un Java Runtime Environment (JRE), come accade nella maggior parte dei casi. Il software è l'imposizione di disprosio ed è gratuito da scaricare e da utilizzare.


0

Per chiunque desideri prendere 1 o 2 pg pdf e trasformarlo in un pdf con 2 copie affiancate di quella vista orizzontale ( ideale per stampare volantini ), fare:

  1. Trasforma l'input 1 o 2 pg pdf in un output che contiene una copia duplicata di quelle pagine (1-pg pdf -> 2-pg pdf, 2-pg pdf -> 4-pg pdf, ecc.):

    pdfunite in.pdf in.pdf out.pdf
    
  2. Combina quel PDF con copia duplicata in un pdf di 2 pagine per lato in modalità orizzontale, ad esempio per stampare volantini:

    pdfnup out.pdf
    

O tutto su una sola riga:

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

Si noti che out.pdfè l' input per pdfnup. Il file di output risultante da pdfnupverrà chiamato " out-nup.pdf ".

Inoltre, guarda l'output del pdfnupcomando e vedrai la forma dettagliata del comando che sta effettivamente eseguendo, il che ti dà un'idea delle opzioni che puoi passare in esso. Apparentemente pdfnupusa pdfjamsotto il cofano:

pdfjam: chiamata efficace per questa corsa di pdfjam:

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

Esempio:

PDF originale (1 pagina normale in vista verticale ), " in.pdf ": inserisci qui la descrizione dell'immagine

PDF finale (2 pg affiancati in vista orizzontale ), " out-nup.pdf ":
- ora può essere tagliato a metà in mezzo per passare come volantini inserisci qui la descrizione dell'immagine

Funzione Bash semplice: make_flyer

Copia e incolla questa funzione bash nella parte inferiore del file "~ / .bashrc" per ottenere l'accesso a un comando semplice e facile da usare 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\""'

Esempio di utilizzo:

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

Vedi informazioni di aiuto:

make_flyer_help

Produzione:

$ 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"

Riferimenti:

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

Relazionato:

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

Riferimenti Bash:

  1. Bash Come passare argomenti in una funzione bash: https://bash.cyberciti.biz/guide/Pass_arguments_into_a_function
  2. Stringhe di Bash Concatenate: https://linuxize.com/post/bash-concatenate-strings/
  3. Bash esegue un cmd memorizzato come stringa! https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
  4. Bash itera su tutti gli input in un cmd: https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script/255913#255913
  5. Bash che passa i parametri per funzionare: https://stackoverflow.com/questions/6212219/passing-parameters-to-a-bash-function/6212408#6212408
  6. Come convertire un pdf da 1 pg in un volantino [il mio ans!]: Come convertire un PDF di 1 pagina in un PDF di 2 pagine per foglio?
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.