Come posso dividere le pagine di un PDF nel mezzo?


38

Qualcuno sa un buon modo per dividere le pagine di un pdf al centro in due nuove pagine?

Per essere chiari, io sto non cercando di dividere le pagine già esistenti da un PDF; Sto cercando di creare due nuove pagine da una singola pagina esistente.


Perchè vuoi fare questo? ottenere pagine più piccole?
Akira,

Beh, MS Office non è un software gratuito, ma se hai MS Office 2007, puoi semplicemente salvare documenti come file PDF e fare come ti pare ...
Owen


Risposte:


26

Prova BRISS .

testo alternativo

Ti consente di dividere ogni pagina in tutte le pagine secondarie che desideri definendo le regioni con una GUI. Raggruppa tutte le pagine simili in gruppi per te, quindi puoi definire le regioni per quel gruppo una volta.

È multipiattaforma, gratuito e open-source.


Sembra che questo aumenti le dimensioni del file (volte "numero di pagine di output per pagina di input"), perché utilizza il contenuto della pagina originale e un riquadro di ritaglio per ogni pagina ritagliata. Se hai bisogno di file di dimensioni ridotte, puoi stampare il file di output su PS e quindi convertirlo in PDF, ma potresti perdere qualità (ad esempio, a causa dei caratteri bitmap).
tanius,

37

Puoi risolverlo con l'aiuto di Ghostscript. pdftkda solo non posso farlo (per quanto ne so). Ti darò i passaggi della riga di comando per farlo manualmente. Sarà facile copiarlo come una procedura, anche con parametri diversi per dimensioni e numeri di pagina. Ma hai detto che puoi farlo da solo ;-)

Come risolverlo con l'aiuto di Ghostscript ...

... e per il gusto di farlo, ho fatto di recente che non con un file di input con le pagine "double-up", ma con "Treble-up". Puoi leggere la risposta per questo caso in questa altra risposta .

Il tuo caso è ancora più semplice. Sembra che tu abbia qualcosa di simile a questo:

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

Volete creare 1 PDF con 4 pagine, ognuna delle quali ha le dimensioni di 421 pt x 595 pt.

Primo passo

Per prima cosa estraiamo le sezioni di sinistra da ciascuna delle pagine di input:

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

Cosa hanno fatto questi parametri?

Innanzitutto, sappi che in PDF 1 pollice == 72 punti . Quindi il resto è:

  • -o ...............:Nome file di output. Utilizza anche implicitamente -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : vogliamo PDF come formato di output.
  • -g................:imposta la dimensione del supporto di output in pixel. La risoluzione predefinita di pdfwrite è 720 dpi. Quindi moltiplicare per 10 per ottenere una corrispondenza per PageOffset.
  • -c "..............:chiede a Ghostscript di elaborare lo snippet di codice PostScript appena prima del file di input principale (che deve seguire -f).
  • <</PageOffset ....:imposta lo spostamento dell'immagine della pagina sul supporto. (Naturalmente, per le pagine a sinistra il passaggio da [0 0]non ha alcun effetto reale.)
  • -f ...............: elaborare questo file di input.

Quale risultato ha ottenuto l'ultimo comando?

Questo:

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

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

Secondo passo

Successivamente, le sezioni giuste:

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

Risultato:

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

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

Ultimo passo

Ora uniamo le pagine in un unico file. Potremmo farlo anche con ghostscript, ma useremo pdftkinvece, perché è più veloce per questo lavoro:

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

Fatto. Ecco il risultato desiderato. 4 pagine diverse, dimensioni 421x595 pt.

Risultato:

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

3
Bella! Dovresti davvero usarlo in ogni risposta se vuoi continuare a ottenere voti gratis!
Ivo Flipse

2
Il secondo passo ha lavorato solo per me quando ho usato un offset negativo: "<</PageOffset [-421 0]>> setpagedevice". Immagino che dipenda dall'orientamento del file originale. Risposta eccellente comunque. :)
Moraes

1
Per me il secondo passo ha funzionato anche con il segno meno
Rafareino

9

Grazie a @marttt e alla loro risposta in Unix e Linux .

Puoi usare mutool(di cui fa parte mupdf):

mutool poster -x 2 input.pdf output.pdf

È inoltre possibile utilizzare -yse si desidera eseguire una divisione verticale.


Questa è una soluzione semplice, grazie. Sfortunatamente, non c'è modo di spostare il contenuto della pagina per regolare i margini - per questo usa il metodo descritto da Kurt Pfeifle.
Ján Lalinský,

0

Per espandere la risposta di @ Kurt (poiché non ho abbastanza punti reputazione da commentare), assicurati innanzitutto che le dimensioni che usi non si basino sulle dimensioni del Crop Box se sono diverse dalle dimensioni del Media Box. Le dimensioni dell'output si basano sulle dimensioni del riquadro multimediale, ma l'offset sembra utilizzare le dimensioni del riquadro di ritaglio.

Per una pagina apribile con una scatola multimediale 20.0833 x 13.833 e una casella di ritaglio 19.25 x 13.0 che era la stessa della casella di ritaglio nel mio documento, per dividerla in due pagine su Ubuntu, per il lato sinistro:

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

Il lato corretto:

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

E poi li ho ricuciti pdftk left.pdf right.pdf output final.pdf.

Un'alternativa sarebbe quella di impostare la casella di ritaglio allo stesso modo della casella multimediale; quindi l'offset sarebbe -723. Ma poi il ritaglio dovrebbe essere ripristinato per tagliare affinché le pagine appaiano senza soluzione di continuità. Altrimenti, impostare i supporti per ritagliare.


Nota, dopo aver diviso le pagine con queste opzioni di comando, le caselle multimediali non cambiano. Cambia solo il raccolto. Se si divide una pagina in più pagine, le nuove pagine mantengono le dimensioni del riquadro multimediale dalla vecchia pagina. È necessario sed per modificare le dimensioni del box multimediale. Sebbene non sappia come impostare il box multimediale per ritagliare senza includere i numeri nel comando.
motorbaby,

Ops. Intendo che le nuove pagine mantengono le dimensioni del riquadro di ritaglio dalla vecchia pagina.
motorbaby,

Trovato un bug con i PDF di Acrobat. Visivamente, le dimensioni di cropBox possono essere visualizzate in Set Page Box in Acrobat. Ma le dimensioni di cropBox dopo aver usato Ghostscript per dividere la copertina hanno mantenuto le dimensioni della pagina precedente su un altro livello. Questo potrebbe essere visto nelle informazioni di analisi Preflight in Acrobat. Dopo aver regolato temporaneamente il ritaglio in Acrobat sul lato destro della pagina sinistra su un numero arbitrario e averlo quindi riportato a 0, anche le altre dimensioni della casella (al vivo, disegno e ritaglio) sono state adeguate. Ciò ha risolto il problema in cui i dati di cropBox mostravano ancora le dimensioni della pagina precedente. La pagina giusta era un po 'diversa.
motorbaby,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.