Como posso dividir as páginas em PDF no meio?


36

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

Para ser claro, eu sou não tentando dividir as páginas já existentes de um pdf; Eu estou tentando criar duas novas páginas de uma única página existente.


por que você quer fazer isso? ficando páginas menores?
akira

Bem MS Office não é um freeware, mas se você tem o MS Office 2007, então você poderia apenas salvar documentos como arquivos PDF e fazer o que quiser ...
Owen


Respostas:


26

Experimentar BRISS .

alt text

Ele permite que você divida 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, livre e de código aberto.


Parece que isso aumenta o tamanho do arquivo (vezes "número de páginas de saída por página de entrada"), porque ele usa o conteúdo da página original e uma caixa de corte para cada página cortada. Se você precisar de um tamanho de arquivo pequeno, poderá imprimir o arquivo de saída em PS e, em seguida, convertê-lo em PDF, mas poderá perder qualidade (por exemplo, devido a fontes de bitmap).
tanius

36

Você pode resolver isso com a ajuda do Ghostscript. pdftk sozinho não pode fazer isso (para o melhor do meu conhecimento). 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 pela diversão, eu recentemente fiz isso não com um ficheiro de entrada com páginas "duplas", mas uma com "agudos". 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ê quer criar 1 PDF com 4 páginas, cada uma com o tamanho de 421 pt x 595 pt.

Primeiro passo

Vamos primeiro extrair as seções da 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 fizeram?

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

  • -o ...............: Nomes de 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 ser seguido -f ).
  • <</PageOffset ....: configura a mudança da imagem da página no meio. (Claro, para as páginas da esquerda a mudança de [0 0] não tem efeito real.)
  • -f ...............: processar este arquivo de entrada.

Qual resultado o último comando alcançou?

Este:

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 corretas:

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

Último passo

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

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

Feito. 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 -->

3
Bonita! Você realmente deve usar isso em todas as respostas, se você quiser continuar recebendo upvotes de graça!
Ivo Flipse

2
O segundo passo só funcionou para mim quando usei um offset negativo: "<</PageOffset [-421 0]>> setpagedevice". Eu acho que depende da orientação do arquivo original. Excelente resposta, no entanto. :)
moraes

1
Para mim o segundo passo também trabalhou com o sinal de menos
Rafareino

6

Graças a @marttt e sua responder em Unix & amp; 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 você quiser realizar uma divisão vertical.


Esta é uma solução simples, obrigado. Infelizmente, não há como deslocar o conteúdo da página para ajustar as margens - para isso use o método descrito por Kurt Pfeifle.
Ján Lalinský

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 deslocamento parece usar as dimensões da caixa de corte.

Para uma página gatefold que tinha uma caixa de mídia de 20.0833 x 13.833 e uma caixa de 19,25 x 13,0 que era a mesma que a caixa de recorte no 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 costurou-os com pdftk left.pdf right.pdf output final.pdf.

Uma alternativa seria definir a caixa de corte para o mesmo que 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.


Observe, depois de dividir as páginas com essas opções de comando, as caixas de mídia não são alteradas. Apenas a cultura muda. Se você dividir uma página em várias páginas, as novas páginas manterão as dimensões da caixa de mídia na página antiga. Precisa sed para modificar as dimensões da caixa de mídia. Embora não saiba como definir a caixa de mídia para cortar sem incluir números no comando.
motorbaby

Oops Quero dizer, as novas páginas mantêm as dimensões da caixa de corte da página antiga.
motorbaby

Encontrou um bug nos PDFs do Acrobat. Visualmente, as dimensões do cropBox podem ser vistas em Definir caixas de páginas no Acrobat. Mas as dimensões do cropBox depois de usar o Ghostscript para dividir o gatefold mantinham as dimensões da página antiga em outro nível. Isso pode ser visto em Informações de análise de pré-impressão no Acrobat. Depois de ajustar o recorte no Acrobat no lado direito da página esquerda temporariamente para um número arbitrário e depois retorná-lo para 0, as outras dimensões da caixa (sangramento, arte e corte) também são ajustadas. Isso corrigiu o problema em que os dados do cropBox ainda mostravam as dimensões da página antiga. A página certa foi um pouco diferente.
motorbaby
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.