¿Cómo convertir un PDF de 1 página a un PDF de 2 páginas por hoja?


44

Me gustaría imprimir un PDF para que en la parte frontal de la primera página estén las dos primeras páginas, en la parte posterior la 3ra y 4ta y así sucesivamente.

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

 page 1 - front             page 1 - back

Como pensé que mi impresora que usa Linux no admite la impresión dúplex manual, tal vez podría editar el pdf de la misma manera.

¿Pero cómo?


No creo que esto sea posible, ¿solo tienes el pdf?
Michael K

Esto es posible en Linux usando pstops desde el paquete psutils y / o pdftk. ¿Qué sistema operativo estás ejecutando?
rems

@Ivo Flipse: har, pensé exactamente lo mismo :) así que tu comentario también obtiene un +1.
akira

@Ivo Flipse, @rems: Puede upvote más arte ASCII aquí: superuser.com/questions/54054/... y superuser.com/questions/235074/... ... @mokasin: estos enlaces que pueden dar una idea de cómo resolver la tarea que pediste.
Kurt Pfeifle

Respuestas:


23

Además de lo que se ha mencionado, PDFjam incluye una herramienta de línea de comandos, pdfnupque hace esto. (Utiliza el paquete pdfpages para PDFLaTeX debajo, que también puede usar).

Si prefiere una GUI, jPDFtweak es otra opción.


Perfecto. Justo lo que estaba buscando.
mokasin

1
Ejemplo de uso: pdfnup --nup 2x1 mypdf.pdf. Imprime 2 páginas una al lado de la otra en una vista horizontal, para imprimirlas en el borde corto. Vea man pdfnuppara algunos detalles más.
Gabriel Staples

También he decidido agregar una respuesta: cómo convertir 1 pdf de 1 pg en una vista horizontal con 2 copias duplicadas en la misma página (ideal para imprimir volantes): superuser.com/a/1452008/425838
Gabriel Grapas

22

Use pdfnup:

$ pdfnup file.pdf

Esto creará un nuevo archivo pdf exactamente como lo solicitó.


pdfnup muestra las opciones de línea de comando utilizadas con pdfjam y, por lo tanto, puede ajustar desde allí. (por ejemplo: si no desea tener un paisaje. puede eliminar la opción --landscape al llamar a pdfjam)
Trevor Boyd Smith el

66
Más exactamente pdfnup --nup 2x1 --suffix test file.pdfcreará un file-test.pdfcon 2 páginas en 1.
lolesque

1
sudo apt install texlive-extra-utilspara instalar estas utilidades en Ubuntu.
Sarke

Tengo una sola página a4 que quiero imprimir en dos copias de a5 por hoja. ¿Cómo logro esto? Los ejemplos de uso de 'pdfnup' anteriores no duplican la primera página, sino que dejan en blanco la segunda parte a5 de la primera hoja a4.
Nordlöw

2

Esta es una pregunta lo suficientemente antigua como para pensar que las opciones que tenemos ahora estaban ausentes en ese momento, pero tal vez merece una solución actualizada.

Los visores de PDF de Linux suelen usar las opciones / propiedades de impresión para establecer el diseño de la página, y allí puede imprimir varias páginas por hoja / lado. La idea es usarlos para imprimir en un archivo como PDF .

Evince puede hacerlo, también qpdfview . Más aquí.


qpdfview

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


Mostrar

ingrese la descripción de la imagen aquí


PDF Studio Viewer

ingrese la descripción de la imagen aquí

Otros visores de pdf deben tener opciones similares.


1

Hay herramientas gratuitas de línea de comandos de código abierto disponibles para convertir archivos PDF a extensiones de lectores, extensiones de folletos, etc.

Perdí la aplicación que estaba usando, así que no hay ayuda, pero a partir de una búsqueda rápida veo un programa llamado pdfshuffler ( http://sourceforge.net/projects/pdfshuffler/ ) que podría ser lo que necesita. Tiene una interfaz gráfica de usuario, por lo que no es probable que sea automático, pero es una interfaz para otra herramienta ...


0

Si tiene la facilidad de imprimir para archivar. imprima en el archivo con dos páginas por configuración de página y con páginas impares. Repita el proceso con páginas pares. Ahora imprima los impares, invierta los papeles impresos e imprima el archivo de páginas pares.


0

@mokasin: No dijiste qué lector de PDF estás usando. Si usa la versión Linux de Acrobat / Adobe Reader: hay una opción para imprimir "2-up" directamente en el diálogo de impresión. También puede elegir imprimir solo las páginas pares o impares, por lo que combinar esto le ayudará a lograr el resultado deseado.


0

Este software que probé en el sistema operativo Solaris 11.2 puede crear ese esquema que se llama 2-up, generalmente utilizado para repartir en las aulas o reuniones. Es posible producir otros esquemas; por ejemplo, entregue con 3 o 4 o más páginas en una hoja o en ambos lados de una hoja. Se puede ejecutar desde un terminal ya que es un archivo JAR o simplemente ejecutar la GUI para facilitar el acceso. Además de Solaris, otras distribuciones de Linux también son compatibles, ejecutando el software como "ejecutable" con privilegios de superusuario. Tenga en cuenta que no utiliza "Abrir el archivo". También está funcionando en cualquier Windows y Mac donde ya hay un Java Runtime Environment (JRE) instalado, como es el caso la mayor parte del tiempo. El software es Dysprosium Imposition y se puede descargar y usar de forma gratuita.


0

Para cualquiera que quiera tomar 1 o 2 pg de pdf y convertirlo en un pdf con 2 copias de ese lado a lado en vista horizontal ( ideal para imprimir volantes ), haga lo siguiente:

  1. Convierta la entrada de 1 o 2 pg de pdf en una salida que contenga una copia duplicada de esas páginas (1-pg pdf -> 2-pg pdf, 2-pg pdf -> 4-pg pdf, etc.):

    pdfunite in.pdf in.pdf out.pdf
    
  2. Combine ese PDF de copia duplicada en un PDF de 2 páginas por lado en vista horizontal, para imprimir volantes, por ejemplo:

    pdfnup out.pdf
    

O todo en una sola línea:

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

Tenga en cuenta que out.pdfes la entrada a pdfnup. El archivo de salida resultante de pdfnupse llamará " out-nup.pdf ".

Además, mire la salida del pdfnupcomando y verá la forma detallada del comando que realmente está ejecutando, lo que le da una idea de las opciones que puede pasarle. Aparentemente pdfnupusa pdfjamdebajo del capó:

pdfjam: Llamada efectiva para esta ejecución de pdfjam:

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

Ejemplo:

PDF original (1 pág. Normal en vista vertical), " in.pdf ": ingrese la descripción de la imagen aquí

PDF final (2 páginas una al lado de la otra en vista horizontal ), " out-nup.pdf ":
ahora se puede cortar por la mitad por la mitad para pasar como volantes ingrese la descripción de la imagen aquí

Función de golpe simple: make_flyer

Copie y pegue esta función bash en la parte inferior de su archivo "~ / .bashrc" para obtener acceso a un comando simple y fácil de usar 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\""'

Ejemplo de uso:

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

Ver información de ayuda:

make_flyer_help

Salida:

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

Referencias

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

Relacionado:

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

Referencias Bash:

  1. Bash Cómo pasar argumentos a una función bash: https://bash.cyberciti.biz/guide/Pass_arguments_into_a_function
  2. Bash Concatenate strings: https://linuxize.com/post/bash-concatenate-strings/
  3. ¡Bash ejecuta un cmd almacenado como una cadena! https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
  4. Bash itera sobre todas las entradas a un cmd: https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script/255913#255913
  5. Bash que pasa parámetros para funcionar: https://stackoverflow.com/questions/6212219/passing-parameters-to-a-bash-function/6212408#6212408
  6. Cómo convertir un pdf de 1 pg en un volante [mis propios mensajes!]: ¿Cómo convertir un PDF de 1 página en un PDF de 2 páginas por hoja?
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.