Converta PDF 2 lados por página em 1 lado por página

11

Como converter um PDF com 2 lados por página em 1 lado por página?

user13910
fonte
Isso é absolutamente louco! Não há como alterar as configurações da página em um PDF para serem unilaterais, em vez de bilaterais?
precisa saber é o seguinte
@ Nathan Fellman: Louco, sim. Mas as coisas loucas às vezes dar-lhe maior parte da diversão ;-)
Kurt Pfeifle
Possível duplicata de Como posso dividir as páginas de um PDF ao meio?
Skippy le Grand Gourou
@SkippyleGrandGourou Não vejo como essa pergunta está relacionada. As perguntas não estão tentando fazer duas coisas diferentes com as páginas?
187 Ben Ben N
@ BenN: Ambas as perguntas perguntam como "criar duas novas páginas a partir de uma única página existente", para citar a outra. A resposta mais votada é quase uma copypasta.
Skippy le Grand Gourou

Respostas:

23

OK, o problema já foi resolvido com a ajuda do Acrobat (versão completa, não Reader). Mas o que fazer se você não tiver acesso ao Acrobat? Isso também poderia ser feito com o Ghostscript e o pdftk?

Como resolver isso com a ajuda do Ghostscript ...

... e, por diversão, não vamos usar um arquivo de entrada com páginas "dobradas", mas um com "agudos". Na verdade, recebi um desses PDF hoje por email. Era um folheto dobrado no esquema de Leporello . O tamanho da folha era A4 (842pt x 595pt), e era dobrado e colocado da seguinte maneira:

Front side to be printed, page 1 of PDF
+--------+--------+--------+   ^
|        |        |        |   |
|   5    |   6    |   1    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
         ^        ^
        fold     fold
         v        v
+--------+--------+--------+   ^
|        |        |        |   |
|   2    |   3    |   4    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->

Quero criar 1 PDF com 6 páginas, cada uma com o tamanho incomum de 280,67pt x 595 pt.

Primeiro passo

Vamos primeiro extrair as seções esquerdas de cada uma das páginas de entrada:

gswin32c.exe ^
    -o left-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [0 0]>> setpagedevice" ^
    -f myflyer.pdf

O que esses parâmetros fizeram?

  • -o ...............:Nomeia o arquivo de saída. Implicitamente também usa -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : queremos PDF como formato de saída.
  • -g................:define o tamanho da mídia de saída em pixels. A resolução padrão do pdfwrite é 720 dpi. Portanto, multiplique por 10 para obter uma correspondência para o PageOffset.
  • -c "..............:solicita ao Ghostscript que processe o snippet de código PostScript fornecido logo antes do arquivo de entrada principal (que precisa ser seguido -f).
  • <</PageOffset ....:define o deslocamento da imagem da página no meio. (É claro que, para as páginas da esquerda, a troca por [0 0]não tem efeito real.)
  • -f ...............: processe esse arquivo de entrada.

Qual resultado o último comando alcançou?

Este:

Output file: left-sections.pdf, page 1
+--------+  ^
|        |  |
|   5    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

Output file: left-sections.pdf, page 2
+--------+  ^
|        |  |
|   2    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v
< 280 pt >

Segundo passo

Agora vamos fazer a coisa análoga para as seções centrais:

gswin32c.exe ^
    -o center-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [280.67 0]>> setpagedevice" ^
    -f myflyer.pdf

Resultado:

Output file: center-sections.pdf, page 1
+--------+  ^
|        |  |
|   6    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

Output file: center-sections.pdf, page 2
+--------+  ^
|        |  |
|   3    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v
< 280 pt >

Terceiro passo

Por fim, as seções corretas:

gswin32c.exe ^
    -o right-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [561.34 0]>> setpagedevice" ^
    -f myflyer.pdf

Resultado:

Output file: right-sections.pdf, page 1
+--------+  ^
|        |  |
|   1    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

Output file: right-sections.pdf, page 2
+--------+  ^
|        |  |
|   4    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v
< 280 pt >

Último passo

Agora combinamos as páginas em um arquivo:

pdftk.exe ^
  A=right-sections.pdf ^
  B=center-sections.pdf ^
  C=left-sections.pdf ^
  cat A1 B2 C2 A2 B1 C1 ^
  output single-files-input.pdf
  verbose

Feito. Aqui está o resultado desejado. 6 páginas diferentes, tamanho 280,67x595.

Resultado:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 
Kurt Pfeifle
fonte
1
Caramba, arte incrível aqui!
Ivo Flipse 01/03
Isso funcionou bem para mim, mas eu tive que definir o PageOffset como um número negativo para obter as outras seções.
jonchang
Você pode usar o Python para PDFs maiores: f = open("order.dat","w") for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i)) f.close()Isso criará um arquivo order.dat com "A1 B1 A2 B2 ... A63 B63". Você pode copiar e colar para pdftk.
Suuuehgi
3

@peims, obrigado. Aqui está a versão passo a passo do seu método. Eu tentei em um arquivo que queria converter para o meu Kindle DX e funciona perfeitamente:

  • Use a versão completa do Acrobat v9 para cortar o lado esquerdo da página e salve-o como "left.pdf":
    • Use a ferramenta de corte para marcar o lado esquerdo da página.
    • Clique com o botão direito e selecione "Set Cropbox".
    • Selecione "Documento .. Páginas de corte" e aplique o recorte a todo o documento.
  • Repita com as páginas da direita, salve como "right.pdf".
  • Nesse estágio, você tem dois documentos: "left.pdf" com as páginas à esquerda e "right.pdf" com as páginas à direita.

Em seguida, use o pdftk.exe (em http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ) para intercalar os resultados em um único arquivo. Copie "pdftk.exe", "left.pdf" e "right.pdf" para "D: \" e execute:

  • D:> pdftk D: \ left.pdf saída intermitente% 05d_A.pdf
  • D:> pdftk D: \ right.pdf saída intermitente% 05d_B.pdf
  • D:> pdftk * _ ?. pdf saída de gato combinada.pdf

Nota: se você copiar os arquivos para "C: \", ele não funcionará no Windows 7 devido a permissões de segurança. Se você não possui um D: \, crie um diretório "C: \ x" para concluir a operação.

Esses resultados normalmente seriam bons o suficiente. No entanto, existem mais duas etapas opcionais para melhorar a saída.

  • (etapa final opcional 1) Nesse estágio, o documento é enorme (meu documento aumentou de 7 MB para 80 MB), para que você possa reduzir o tamanho do arquivo usando:
    • "Advanced..PDF Optimizer" ou:
    • "Advanced..Preflight" com a configuração "Compatible with Acrobat 5".
  • (etapa final opcional 2) As páginas são de tamanhos diferentes. Repita o corte em todas as páginas, para que tudo tenha um tamanho uniforme.
Contango
fonte
3

Só tive o mesmo problema. Eu me deparei com o briss, uma ferramenta GUI java de código aberto para separar e cortar páginas em pdf:

http://sourceforge.net/projects/briss/

Funcionou muito bem para mim, no Linux, mesmo que a interface do usuário não seja completamente trivial. Ele até trabalhou com um pdf com algumas páginas de tamanhos diferentes!

Matthias
fonte
2

Você pode duplicar o documento e cortar as páginas para que apenas os números pares de páginas sejam exibidos em um arquivo e apenas os números ímpares das páginas no outro. Em seguida, divida os arquivos em páginas únicas e recombine para criar um documento com lados únicos em uma página ...

Você pode fazer isso usando vários métodos, por exemplo:

  1. Use a ferramenta de corte do Adobe Acrobat para cortar um lado da página dupla e aplique o corte a todas as páginas.
  2. Divida os arquivos em páginas individuais usando o comando 'burst' no pdftoolkit
  3. Renomeie os arquivos sequencialmente usando uma ferramenta de renomeação de arquivos (por exemplo, ReNamer )
  4. Recombine as páginas usando o comando 'cat' no pdftoolkit
peles
fonte
2

Eu uso o seguinte script para processar livros digitalizados no Mac e Linux. Isso pode consumir bastante memória.

#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder". 
#
# The second step is to take each page of the PDF and split this into two two pages, 
# because each page of the scanned document actually contains two pages of the book.
#
#

FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf

echo "Making a temporary copy of the input file."

cp $1 $FILE

#
# Start cropping
#

echo "Cropping the PDF"

# The first regex removes all boxes but CropBox. The second regex renames the  CropBox as MediaBox

perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE

echo "Validating the PDF"

#Run PDFTK to ensure that the file is OK

cat $FILE | pdftk - output $FILE2

#
# Done cropping, start splitting the pages
#

echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"

convert -density 200  $FILE2 -crop 50%x0 +repage $FILE3

#
# Done spliting, copy the result in a new file
#


mv $FILE3 $1.pages.pdf
mronkko
fonte
1

Obrigado por uma ótima referência. Eu estava em um problema semelhante, mas queria compartilhar o que funcionou para mim.

Eu tinha um tablóide orientado para paisagem em formato pdf, com texto orientado para retrato apenas no lado esquerdo. Tabloide basicamente em 2 partes, sem conteúdo no lado direito da página. Ponto de partida semelhante, mas o tablóide é 792 × 1224 (retrato), 1124 x 792 (paisagem) e a definição de ponto para o tablóide de 1/2 que eu precisava era de 612 x 792 pontos.

"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"

Obtive o conteúdo necessário para o retrato de 8,5 x 11, muito mais legível.

Charlie
fonte
0

O que eu entendo é que um arquivo PDF mostrando duas páginas (lado a lado em uma folha) precisa ser convertido em uma página por folha, resultando em duas folhas de arquivo PDF. Em outras palavras, se houver um total de trinta páginas em 15 folhas, precisamos converter o arquivo PDF em um arquivo PDF de trinta folhas, cada uma mostrando uma página. Se esse for o problema, usei o Adobe acrobat XI PRO "ferramenta de extração de página" especificando os números de página de 1 a 30

RN SONI
fonte