Convierta PDF 2 caras por página a 1 cara por página

11

¿Cómo puedo convertir un PDF con 2 lados por página a 1 lado por página?

usuario13910
fuente
¡Esto es absolutamente loco! ¿No hay forma de cambiar la configuración de página en un PDF para que sea unilateral en lugar de bilateral?
Nathan Fellman
@Nathan Fellman: Loco, sí. Pero las cosas locas a veces te dan la mayor parte de la diversión ;-)
Kurt Pfeifle
Posible duplicado de ¿Cómo puedo dividir las páginas de un PDF por la mitad?
Skippy le Grand Gourou
@SkippyleGrandGourou No veo cómo se relaciona esa pregunta. ¿Las preguntas no intentan hacer dos cosas diferentes con las páginas?
Ben N
@BenN: Ambas preguntas preguntan cómo "crear dos páginas nuevas a partir de una sola página existente", para citar la otra. La respuesta más votada es casi una copia.
Skippy le Grand Gourou

Respuestas:

23

OK, el problema ya se resolvió con la ayuda de Acrobat (versión completa, no Reader). ¿Pero qué hacer si no tiene acceso a Acrobat? ¿Podría hacerse esto también con Ghostscript y pdftk?

Cómo resolver esto con la ayuda de Ghostscript ...

... y por diversión, no usemos un archivo de entrada con páginas "dobles", sino uno con "agudos". En realidad, recibí uno de esos PDF hoy por correo electrónico. Era un volante, doblado en el Esquema de Leporello . El tamaño de la hoja era A4 horizontal (842pt x 595pt), y estaba doblado y distribuido de esta manera:

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

Quiero crear 1 PDF con 6 páginas, cada una de las cuales tiene el tamaño inusual de 280.67pt x 595 pt.

Primer paso

Primero extraigamos las secciones izquierdas de cada una de las páginas de entrada:

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

¿Qué hicieron estos parámetros?

  • -o ...............:Nombre de archivo de salida. Implícitamente también utiliza -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : Queremos PDF como formato de salida.
  • -g................:establece el tamaño del medio de salida en píxeles. La resolución predeterminada de pdfwrite es 720 ppp. Por lo tanto, multiplique por 10 para obtener una coincidencia para PageOffset.
  • -c "..............:le pide a Ghostscript que procese el fragmento de código PostScript dado justo antes del archivo de entrada principal (que debe seguir -f).
  • <</PageOffset ....:establece el desplazamiento de la imagen de la página en el medio. (Por supuesto, para las páginas izquierdas, el desplazamiento [0 0]no tiene ningún efecto real).
  • -f ...............: procesar este archivo de entrada.

¿Qué resultado logró el último comando?

Éste:

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

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

Segundo paso

Ahora hagamos lo análogo para las secciones centrales:

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

Resultado:

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

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

Tercer paso

Por último, las secciones correctas:

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

Resultado:

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

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

Último paso

Ahora combinamos las páginas en un archivo:

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

Hecho. Aquí está el resultado deseado. 6 páginas diferentes, de tamaño 280.67x595.

Resultado:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 
Kurt Pfeifle
fuente
1
¡Santa mierda, increíble arte aquí mismo!
Ivo Flipse
Esto funcionó bien para mí, pero tuve que establecer PageOffset en un número negativo para obtener las otras secciones.
jonchang
Puede usar Python para archivos PDF más grandes: 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()Esto creará un archivo order.dat con "A1 B1 A2 B2 ... A63 B63". Luego puede copiarlo y pegarlo en pdftk.
Suuuehgi
3

@peims, gracias. Aquí está la versión paso a paso de su método. Lo probé en un archivo que quería convertir para mi Kindle DX, y funciona perfectamente:

  • Utilice la versión completa de Acrobat v9 para recortar el lado izquierdo de la página y guárdelo como "left.pdf":
    • Use la herramienta de recorte para marcar el lado izquierdo de la página.
    • Haga clic derecho y seleccione "Establecer Cropbox".
    • Seleccione "Documento ... Recortar páginas" y aplique el recorte a todo el documento.
  • Repita con las páginas de la derecha, guarde como "right.pdf".
  • En esta etapa, tiene dos documentos: "left.pdf" con las páginas de la izquierda y "right.pdf" con las páginas de la derecha.

Luego, use pdftk.exe (de http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ) para intercalar los resultados en un solo archivo. Copie "pdftk.exe", "left.pdf" y "right.pdf" en "D: \" y ejecute:

  • D:> pdftk D: \ left.pdf salida de ráfaga% 05d_A.pdf
  • D:> pdftk D: \ right.pdf salida de ráfaga% 05d_B.pdf
  • D:> pdftk * _ ?. pdf cat output combine.pdf

Nota: si copia los archivos a "C: \", no funcionará en Win 7 debido a los permisos de seguridad. Si no tiene un D: \, cree un directorio "C: \ x" para completar la operación.

Estos resultados normalmente serían lo suficientemente buenos. Sin embargo, hay dos pasos opcionales más para mejorar la salida.

  • (paso final opcional 1) En esta etapa, el documento es enorme (mi documento aumentó de 7 MB a 80 MB), por lo que puede reducir el tamaño del archivo utilizando:
    • "Advanced..PDF Optimizer", o:
    • "Avanzado ... Comprobación previa" con la configuración "Compatible con Acrobat 5".
  • (paso final opcional 2) Las páginas son de diferentes tamaños. Repita el recorte en todas las páginas, para que todo tenga un tamaño uniforme.
Aplazamiento de pago
fuente
3

Solo tuve el mismo problema. Me topé con briss, una herramienta GUI de Java de código abierto para separar y recortar páginas pdf:

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

Funcionó muy bien para mí, en Linux, a pesar de que la interfaz de usuario no es completamente trivial. ¡Incluso funcionó con un pdf con algunas páginas de diferentes tamaños!

Matías
fuente
2

Puede duplicar el documento y luego recortar las páginas para que solo se muestren los números de página pares en un archivo y solo los números de página impares en el otro. Luego divida los archivos en páginas individuales y vuelva a combinarlos para hacer un documento con lados individuales en una página ...

Puede hacerlo utilizando varios métodos, por ejemplo:

  1. Use la herramienta de recorte Adobe Acrobat para recortar un lado de la página doble y aplique el recorte a todas las páginas.
  2. Divida los archivos en páginas individuales utilizando el comando 'burst' en pdftoolkit
  3. Cambie el nombre de los archivos de forma secuencial utilizando una herramienta de cambio de nombre (por ejemplo, ReNamer )
  4. Recombine las páginas usando el comando 'cat' en pdftoolkit
pelmas
fuente
2

Utilizo el siguiente script para procesar libros escaneados en Mac y Linux. Esto puede requerir bastante 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
mronkko
fuente
1

Gracias por una gran referencia. Tuve un problema similar pero quería compartir lo que funcionó para mí.

Tenía un pdf sensacionalista orientado al paisaje con texto orientado al retrato solo en el lado izquierdo. Esencialmente, el tabloide de 2 en adelante no tiene contenido en el lado derecho de la página. Punto de partida similar, pero el tabloide es 792 × 1224 (Vertical), 1124 x 792 (Paisaje) y la definición del punto para el 1/2 tabloide que necesitaba era 612 x 792 puntos.

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

Me consiguió el contenido que necesitaba en 8.5 x 11 vertical, mucho más legible.

Charlie
fuente
0

Lo que entiendo es que un archivo PDF que muestra dos páginas (una al lado de la otra en una hoja) debe convertirse en una página por hoja, lo que da como resultado dos hojas de archivo PDF. En otras palabras, si hay un total de treinta páginas en 15 hojas, necesitamos convertir el archivo PDF en un archivo PDF de treinta hojas, cada una de las cuales muestra una página. Si este es el problema, he usado Adobe Acrobat XI PRO "herramienta de extracción de páginas" especificando números de página del 1 al 30

RN SONI
fuente