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.
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.
Risposte:
Prova BRISS .
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.
Puoi risolverlo con l'aiuto di Ghostscript. pdftk
da 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 ;-)
... 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.
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 -->
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 -->
Ora uniamo le pagine in un unico file. Potremmo farlo anche con ghostscript, ma useremo pdftk
invece, 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 -->
"<</PageOffset [-421 0]>> setpagedevice"
. Immagino che dipenda dall'orientamento del file originale. Risposta eccellente comunque. :)
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 -y
se si desidera eseguire una divisione verticale.
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.