Converti PDF 2 lati per pagina in 1 lato per pagina


11

Come posso convertire un PDF con 2 lati per pagina in 1 lato per pagina?


Questo è assolutamente pazzesco! Non c'è modo di modificare le impostazioni della pagina in un PDF in modo che sia unilaterale anziché bilaterale?
Nathan Fellman,

@Nathan Fellman: Pazzo, sì. Ma le cose folli a volte ti danno la maggior parte del divertimento ;-)
Kurt Pfeifle,


@SkippyleGrandGourou Non vedo come sia correlata quella domanda. Le domande non stanno provando a fare due cose diverse con le pagine?
Ben N,

@BenN: Entrambe le domande chiedono come "creare due nuove pagine da una singola pagina esistente", per citare l'altra. La risposta più votata è quasi una copypasta.
Skippy le Grand Gourou,

Risposte:


23

OK, il problema è già stato risolto con l'aiuto di Acrobat (versione completa, non Reader). Ma cosa fare se non si ha accesso ad Acrobat? Questo potrebbe essere fatto anche con Ghostscript e pdftk?

Come risolverlo con l'aiuto di Ghostscript ...

... e per divertirci, non usiamo un file di input con pagine "double-up", ma uno con "treble-up". In realtà, ho ricevuto uno di questi PDF oggi via e-mail. Era un volantino, piegato nello Schema di Leporello . La dimensione del foglio era A4 orizzontale (842pt x 595pt), ed era piegata e disposta in questo modo:

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

Voglio creare 1 PDF con 6 pagine, ognuna delle quali ha una dimensione insolita di 280,67pt x 595 pt.

Primo passo

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

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

Cosa hanno fatto questi parametri?

  • -o ...............:Nome file di output. Utilizza anche implicitamente -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : vogliamo PDF come formato di output.
  • -g................:imposta le dimensioni 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 specificato appena prima del file di input principale (che deve seguire con -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
+--------+  ^
|        |  |
|   5    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

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

Secondo passo

Ora facciamo la cosa analoga per le sezioni centrali:

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

Risultato:

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

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

Terzo passo

Infine, le sezioni giuste:

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

Risultato:

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

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

Ultimo passo

Ora uniamo le pagine in un unico file:

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

Fatto. Ecco il risultato desiderato. 6 pagine diverse, dimensioni 280,67x595.

Risultato:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 

1
Merda, arte fantastica proprio qui!
Ivo Flipse

Questo ha funzionato bene per me, ma ho dovuto impostare PageOffset su un numero negativo per ottenere le altre sezioni.
Jonchang,

Puoi usare Python per PDF più grandi: 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()questo creerà un file order.dat con "A1 B1 A2 B2 ... A63 B63". È quindi possibile copiarlo e incollarlo in pdftk.
Suuuehgi,

3

@peims, grazie. Ecco la versione dettagliata del tuo metodo. L'ho provato su un file che volevo convertire per il mio Kindle DX, e funziona perfettamente:

  • Utilizzare la versione completa di Acrobat v9 per ritagliare il lato sinistro della pagina e salvarlo come "left.pdf":
    • Utilizzare lo strumento di ritaglio per contrassegnare il lato sinistro della pagina.
    • Fare clic destro e selezionare "Imposta Cropbox".
    • Seleziona "Document..Crop Pages" e applica il ritaglio all'intero documento.
  • Ripeti con le pagine a destra, salva come "right.pdf".
  • In questa fase, hai due documenti: "left.pdf" con le pagine a sinistra e "right.pdf" con le pagine a destra.

Quindi, utilizzare pdftk.exe (da http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ) per interfogliare i risultati in un singolo file. Copia "pdftk.exe", "left.pdf" e "right.pdf" in "D: \" ed esegui:

  • D:> pdftk D: \ left.pdf output burst% 05d_A.pdf
  • D:> pdftk D: \ right.pdf output burst% 05d_B.pdf
  • D:> pdftk * _ ?. pdf output cat combinato.pdf

Nota: se copi i file in "C: \", non funzionerà con Win 7 a causa delle autorizzazioni di sicurezza. Se non si dispone di una D: \, creare una directory "C: \ x" per completare l'operazione.

Questi risultati sarebbero normalmente abbastanza buoni. Tuttavia, ci sono altri due passaggi opzionali per migliorare l'output.

  • (passaggio finale facoltativo 1) In questa fase, il documento è enorme (il mio documento è aumentato da 7 MB a 80 MB), quindi puoi ridurre le dimensioni del file usando:
    • "Advanced..PDF Optimizer", oppure:
    • "Advanced..Preflight" con l'impostazione "Compatibile con Acrobat 5".
  • (passaggio finale facoltativo 2) Le pagine hanno dimensioni diverse. Ripeti il ​​ritaglio su tutte le pagine, quindi tutto ha una dimensione uniforme.

3

Ho appena avuto lo stesso problema. Mi sono imbattuto in briss, uno strumento di GUI java open source per separare e ritagliare pagine pdf:

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

Ha funzionato molto bene per me, su Linux, anche se l'interfaccia utente non è del tutto banale. Ha persino funzionato con un pdf con pagine di dimensioni diverse!


2

È possibile duplicare il documento, quindi ritagliare le pagine in modo che solo i numeri di pagina pari vengano visualizzati in un file e solo i numeri di pagina dispari nell'altro. Quindi dividere i file in singole pagine e ricombinarli per creare un documento con lati singoli in una pagina ...

Puoi farlo utilizzando una serie di metodi, ad esempio:

  1. Utilizzate lo strumento di ritaglio Adobe Acrobat per ritagliare un lato della doppia pagina e applicare il ritaglio a tutte le pagine.
  2. Dividi i file in singole pagine usando il comando 'burst' in pdftoolkit
  3. Rinominare i file in sequenza utilizzando uno strumento di ridenominazione dei file (ad esempio ReNamer )
  4. Ricombina le pagine usando il comando 'cat' in pdftoolkit

2

Uso il seguente script per elaborare libri digitalizzati su Mac e Linux. Questo può richiedere molta memoria.

#!/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

1

Grazie per un ottimo riferimento. Ero in un problema simile ma volevo condividere ciò che ha funzionato per me.

Avevo un pdf tabloid orientato al paesaggio con testo orientato al ritratto solo sul lato sinistro. Essenzialmente tabloid 2-up mancante di qualsiasi contenuto sul lato destro della pagina. Punto di partenza simile, ma il tabloid è 792 × 1224 (Ritratto), 1124 x 792 (Paesaggio) e la definizione del punto per il tabloid 1/2 di cui avevo bisogno era 612 x 792 punti.

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

Mi ha procurato il contenuto di cui avevo bisogno in un ritratto di 8,5 x 11, molto più leggibile.


0

Quello che ho capito è che un file PDF che mostra due pagine (affiancate su un foglio) deve essere convertito in una pagina per foglio, risultando in due fogli di file PDF. In altre parole, se ci sono trenta pagine in totale su 15 fogli, dobbiamo convertire il file PDF in un file PDF di trenta fogli ciascuno con una pagina. Se questo è il problema, ho usato Adobe Acrobat XI PRO "Estrai strumento pagina" specificando i numeri di pagina da 1 a 30


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.