Como posso dividir as páginas de um PDF no meio?

35

Alguém sabe de uma boa maneira de dividir as páginas de um PDF no meio em duas novas páginas?

Para ser claro, não estou tentando tentar dividir as páginas já existentes de um PDF; Estou tentando criar duas novas páginas a partir de uma única página existente.

    
por YGA 19.01.2011 / 06:55

4 respostas

26

Teste BRISS .

Permite dividir cada página em quantas subpáginas desejar, definindo regiões com uma GUI. Ele agrupa todas as páginas semelhantes em grupos para você, portanto, você pode definir regiões para esse grupo uma vez.

É multi-plataforma, gratuito e de código aberto.

    
por 19.01.2011 / 20:04
34

Você pode resolver isso com a ajuda do Ghostscript. pdftk sozinho não pode fazer isso (até onde eu sei). Vou te dar os passos da linha de comando para fazer isso manualmente. Será fácil roteirizar isso como um procedimento, também com parâmetros diferentes para tamanhos de página e números de página. Mas você disse que pode fazer isso sozinho;)

Como resolver isso com a ajuda do Ghostscript ...

... e por diversão, eu recentemente fiz não com um arquivo de entrada com páginas "double-up", mas uma com "treble-ups". Você pode ler a resposta para este caso nesta outra resposta .

Seu caso é ainda mais simples. Você parece ter algo parecido com isso:

+------------+------------+   ^
|            |            |   |
|      1     |      2     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
             ^
            fold
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

Você deseja criar um PDF com 4 páginas, cada uma com o tamanho de 421 pt x 595 pt.

Primeiro passo

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

gs \
    -o left-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [0 0]>> setpagedevice" \
    -f double-page-input.pdf

O que esses parâmetros fazem?

Primeiro, saiba que em PDF 1 polegada == 72 pontos . Então o resto é:

  • -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 é de 720 dpi. Por isso, multiplique por 10 para obter uma correspondência para PageOffset.
  • -c "..............: pede ao Ghostscript para processar o trecho de código PostScript fornecido antes do arquivo de entrada principal (que precisa seguir com -f ).
  • <</PageOffset ....: configura o deslocamento da imagem da página no meio. (Claro que, para as páginas da esquerda, a mudança de [0 0] não tem efeito real.)
  • -f ...............: processa este arquivo de entrada.

Qual foi o resultado do último comando?

Este aqui:

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

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

Segundo passo

Em seguida, as seções certas:

gs \      
    -o right-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [-421 0]>> setpagedevice" \
    -f double-page-input.pdf

Resultado:

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

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

Última etapa

Agora combinamos as páginas em um único arquivo. Poderíamos fazer isso com ghostscript também, mas usaremos pdftk , porque é mais rápido para esse trabalho:

pdftk \
  A=right-sections.pdf \
  B=left-sections.pdf \
  shuffle A B \
  output single-pages-output.pdf
  verbose

Concluído. Aqui está o resultado desejado. 4 páginas diferentes, tamanho 421x595 pt.

Resultado:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
    
por 19.01.2011 / 22:22
6

Thanks to @marttt and their answer in Unix & Linux.

Você pode usar mutool (que vem como parte de mupdf ):

mutool poster -x 2 input.pdf output.pdf

Você também pode usar -y se quiser realizar uma divisão vertical.

    
por 15.11.2015 / 17:18
0

Para ampliar a resposta do @ Kurt (já que não tenho pontos de reputação suficientes para comentar) primeiro certifique-se de que as dimensões que você usa não sejam baseadas nas dimensões da Caixa de Cultura se forem diferentes das dimensões da Caixa de Mídia. O tamanho da saída é baseado nas dimensões da Media Box, mas o offset parece usar as dimensões da caixa de corte.

Para uma página gatefold que tinha uma caixa de mídia 20.0833 x 13.833 e uma caixa de 19,25 x 13,0 que era a mesma do meu documento, para dividi-la em duas páginas no Ubuntu, para o lado esquerdo:

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf

O lado direito:

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf

E então os costurou com pdftk left.pdf right.pdf output final.pdf .

Uma alternativa seria definir a caixa de corte como a caixa de mídia; então o deslocamento seria -723. Mas, em seguida, a cultura teria que ser redefinida para aparar para que as páginas parecessem perfeitas. Caso contrário, defina a mídia para recortar.

    
por 25.07.2015 / 01:40