Como converter um PDF de 1 página em um PDF de 2 páginas por folha?

44

Gostaria de imprimir um PDF para que, na frente da primeira página, estejam as duas primeiras, nas costas, na 3ª e na 4ª, e assim por diante.

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

 page 1 - front             page 1 - back

Como minha impressora que usa Linux falha no suporte à impressão dúplex manual, pensei, talvez eu pudesse editar o pdf de uma maneira adequada.

Mas como?

mokasin
fonte
Eu não acho que isso seja possível, você só tem o pdf?
Michael K
Isso é possível no Linux usando pstops do pacote psutils e / ou pdftk. Qual sistema operacional você está executando?
rems
@ Ivo Flipse: har, eu pensei exatamente o mesmo :) então, seu comentário recebe um +1 também.
Akira
@Ivo Flipse, @rems: Você pode votar em mais arte ASCII aqui: superuser.com/questions/54054/… e superuser.com/questions/235074/… ... @mokasin: esses links podem fornecer uma idéia de como resolver a tarefa que você pediu.
Kurt Pfeifle #

Respostas:

23

Além do que foi mencionado, o PDFjam inclui uma ferramenta de linha de comando, pdfnupque faz isso. (Utiliza o pacote pdfpages do PDFLaTeX abaixo, que também pode ser usado.)

Se você preferir uma GUI, o jPDFtweak é outra opção.

frabjous
fonte
Perfeito. É mesmo o que eu procurava.
Mokasin
1
Exemplo de uso: pdfnup --nup 2x1 mypdf.pdf. Isso imprime 2 páginas lado a lado por folha em uma paisagem, a ser impressa virada pela borda curta. Veja man pdfnuppara mais alguns detalhes.
Gabriel Staples
Também decidi adicionar uma resposta: como converter 1 1-pg pdf em uma paisagem com 2 cópias duplicadas na mesma página (ótimo para imprimir folhetos): superuser.com/a/1452008/425838
Gabriel Staples
24

Use o pdfnup:

$ pdfnup file.pdf

Isso criará um novo arquivo pdf exatamente como você pediu.

Joaquin
fonte
O pdfnup mostra as opções de linha de comando usadas com o pdfjam e para que você possa ajustar a partir daí. (. ex: se você quiser não tem paisagem que você pode remover a opção --landscape ao chamar pdfjam)
Trevor Boyd Smith
6
Mais exatamente pdfnup --nup 2x1 --suffix test file.pdfcriará um file-test.pdfcom 2 páginas em 1. #
lolesque
1
sudo apt install texlive-extra-utilspara instalar esses utilitários no Ubuntu.
Sarke 08/08/19
Tenho uma única página a4 que desejo imprimir em duas cópias de a5 por folha. Como eu faço isso? Os exemplos de uso do 'pdfnup' acima não duplicam a primeira página, mas deixam a segunda parte a5 da primeira folha a4 em branco.
Nordlöw 17/03
2

Essa é uma pergunta antiga o suficiente para pensar que as opções que temos agora estavam ausentes na época, mas talvez mereça uma solução atualizada.

Os visualizadores de PDF do Linux geralmente usam as opções / propriedades de impressão para definir o layout da página, e aí você pode imprimir várias páginas por folha / lado. A idéia é usá-los para imprimir em arquivo como PDF .

Evince pode fazer isso, também qpdfview . Mais aqui.


qpdfview

insira a descrição da imagem aqui

insira a descrição da imagem aqui


Evince

insira a descrição da imagem aqui


Visualizador de PDF Studio

insira a descrição da imagem aqui

Outros visualizadores de pdf devem ter opções semelhantes.


fonte
1

Existem ferramentas de linha de comando de software livre e de código aberto disponíveis para converter PDFs em páginas do leitor, páginas de folhetos, etc.

Perdi o aplicativo que estava usando, então não há ajuda lá, mas a partir de uma pesquisa rápida, vejo um programa chamado pdfshuffler ( http://sourceforge.net/projects/pdfshuffler/ ) que pode ser o que você precisa. Tem uma interface gráfica, portanto, provavelmente não é auto-mágica, mas é um front-end para outra ferramenta ...

horatio
fonte
0

Se você possui o recurso de impressão em arquivo. imprima no arquivo com duas páginas por página e com páginas ímpares. repita o processo com páginas pares. Agora imprima os ímpares, inverta os papéis impressos e imprima o arquivo de páginas pares.

Amirali Sanatinia
fonte
0

@mokasin: Você não disse qual leitor de PDF está usando. Se você usa a versão Linux do Acrobat / Adobe Reader: há uma opção para imprimir "2 páginas por folha" diretamente na caixa de diálogo de impressão. Você também pode optar por imprimir apenas as páginas ímpares ou pares, combinando isso o ajudará a alcançar a saída desejada.

Kurt Pfeifle
fonte
0

Este software que testei no sistema operacional Solaris 11.2 pode criar o esquema chamado 2-up, geralmente usado para distribuição em salas de aula ou reuniões. É possível produzir outros esquemas; por exemplo, distribua com 3 ou 4 ou mais páginas em uma folha ou nos dois lados de uma folha. Pode ser executado a partir de um terminal, pois é um arquivo JAR ou simplesmente execute a GUI para facilitar o acesso. Além do Solaris, outras distribuições Linux também são compatíveis, executando o software como "executável", com privilégios de superusuário. Lembre-se de não usar "Abrir o arquivo". Também está funcionando em qualquer Windows e Mac em que já exista um Java Runtime Environment (JRE) instalado, como é o caso na maioria das vezes. O software é Imposição de disprósio e é gratuito para download e uso.

Qualquer pessoa
fonte
0

Para quem quiser pegar 1 ou 2 pg de pdf e transformá-lo em um pdf com 2 cópias lado a lado no modo paisagem ( ótimo para imprimir folhetos ), faça:

  1. Transforme a entrada de 1 ou 2 pg pdf em uma saída que contenha uma cópia duplicada dessas páginas (1-pg pdf -> 2-pg pdf, 2-pg pdf - 2-pg pdf -> 4-pg pdf, etc):

    pdfunite in.pdf in.pdf out.pdf
    
  2. Combine esse PDF de cópia duplicada em um PDF de 2 páginas por lado na paisagem, para imprimir folhetos, por exemplo:

    pdfnup out.pdf
    

Ou tudo em uma única linha:

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

Observe que out.pdfé a entrada para pdfnup. O arquivo de saída resultante de pdfnupserá chamado " out-nup.pdf ".

Além disso, observe a saída do pdfnupcomando e você verá a forma detalhada do comando que ele está realmente executando, o que fornece algumas dicas sobre as opções que você pode passar para ele. Aparentemente pdfnupusa pdfjamsob o capô:

pdfjam: Chamada efetiva para esta execução do pdfjam:

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

Exemplo:

PDF original (1 página regular em modo retrato), " in.pdf ": insira a descrição da imagem aqui

PDF final (2 páginas lado a lado no modo paisagem), " out-nup.pdf ":
- agora pode ser cortado ao meio no meio para passar como panfletos insira a descrição da imagem aqui

Função Bash simples: make_flyer

Copie e cole esta função bash na parte inferior do arquivo "~ / .bashrc" para obter acesso a um comando simples e 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\""'

Exemplo de uso:

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

Consulte Informações da Ajuda:

make_flyer_help

Resultado:

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

Referências:

  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

Referências do Bash:

  1. Bash Como passar argumentos para uma função bash: https://bash.cyberciti.biz/guide/Pass_arguments_into_a_function
  2. Bash Concatenate strings: https://linuxize.com/post/bash-concatenate-strings/
  3. Bash executa um cmd armazenado como uma string! https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
  4. Bash iterar todas as entradas para um cmd: https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script/255913#255913
  5. Bash passando parâmetros para funcionar: https://stackoverflow.com/questions/6212219/passing-parameters-to-a-bash-function/6212408#6212408
  6. Como converter um PDF de 1 pg em um panfleto [meus próprios ans!]: Como converter um PDF de 1 página em um PDF de 2 páginas por folha?
Gabriel Staples
fonte