Tengo un montón de archivos PDF que contienen dos páginas "reales" en una sola página PDF; Me gustaría cortarlos por la mitad y poner cada mitad en una página separada. Esencialmente, necesito algo que haga exactamente lo contrario de pdfnup
(o psnup
). ¿Cómo se puede lograr esta hazaña?
La plataforma es Linux, se prefiere el código abierto; ya que tengo una gran cantidad de estos para hacer algo que puede ser programado (en lugar de una GUI) sería bueno, así que puedo darle una lista de ellos y hacer que los elimine.
Un script preexistente tampoco es la única opción; Si hay un código de muestra para manipular archivos PDF de manera similar con una biblioteca de terceros, probablemente pueda hackearlo para que haga lo que quiera.
linux
pdf
ghostscript
womble
fuente
fuente
Respuestas:
Puede resolver esto con la ayuda de Ghostscript.
pdftk
solo no puedo hacer eso (que yo sepa). Te daré los pasos de la línea de comandos para hacer esto manualmente. Será fácil escribir esto como un procedimiento, también con diferentes parámetros para tamaños de página y números de página. Pero dijiste que puedes hacerlo tú mismo ;-)Cómo resolver esto con la ayuda de Ghostscript ...
... y por diversión, lo he hecho recientemente no con un archivo de entrada con páginas "dobles", sino uno con "agudos". Puede leer la respuesta para este caso aquí .
Tu caso es aún más simple. Parece que tienes algo similar a esto:
Desea crear 1 PDF con 4 páginas, cada una de las cuales tiene un tamaño de 421 pt x 595 pt.
Primer paso
Primero extraigamos las secciones izquierdas de cada una de las páginas de entrada:
¿Qué hicieron estos parámetros?
Primero, sepa que en PDF 1 pulgada == 72 puntos . Entonces el resto es:
-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:
Segundo paso
A continuación, las secciones correctas:
Tenga en cuenta el desplazamiento negativo ya que estamos desplazando la página hacia la izquierda mientras mantenemos el área de visualización estacionaria.
Resultado:
Último paso
Ahora combinamos las páginas en un archivo. También podríamos hacer eso con ghostscript, pero lo usaremos
pdftk
en su lugar, porque es más rápido para este trabajo:Hecho. Aquí está el resultado deseado. 4 páginas diferentes, tamaño 421x595 pt.
Resultado:
fuente
421
->-421
). ;-)Existe una herramienta pdfposter que se puede utilizar para crear archivos PDF con varias páginas para una página de entrada (en mosaico o cortando las páginas). Es similar a la herramienta
poster
, que hace lo mismo para los archivos PostScript.fuente
Entonces, después de mucha más búsqueda (parece que "cortar páginas PDF" es una búsqueda mucho mejor), encontré un pequeño script llamado
unpnup
que utilizaposter
, conversión de PDF / PS, ypdftk
hacer exactamente lo que necesito. Es un poco largo, pero es muy superior a los otros métodos que encontré (como usar imagemagick) porque no rasteriza las páginas antes de escupirlas.En caso de que mobileread desaparezca por alguna razón, el núcleo del script (licenciado bajo la GPLv2 o posterior por Harald Hackenberg
<hackenberggmx.at>
) es el siguiente:fuente
PDF => EPS => PDF
ruta arriesgada y va por elPDF => PDF => PDF
camino más seguro .La respuesta de Kurt Pfeifle me pareció muy útil para mi situación similar. Pensé que podría compartir mi modificación de la solución con otros ...
Yo también tenía un PDF escaneado que tenía 2 páginas en cada hoja. Era un escaneo de 11 x 8,5 (pulgadas) de un folleto cosido en el lomo que quedó grapado cuando se escaneó originalmente, por lo tanto: página 1 del PDF = parte posterior y portada; PDF página 2 = páginas 2 y 3, etc. Esto se lee bien en pantalla pero no puede imprimirlo y luego engraparlo para hacer más copias del folleto.
Necesitaba poder imprimir esto en una copiadora dúplex; es decir, conviértalo de nuevo en un PDF "impuesto", listo para imprimir. Entonces, usando la solución de Kurt, hice este (ejem) "one-liner" para convertirlo nuevamente en medias páginas, en el orden correcto de página nuevamente. Funcionará para cualquier ALTURA y ANCHO, y también para cualquier número de páginas. En mi caso, tenía un folleto de 40 páginas (20 páginas escaneadas en el PDF).
Solo necesita modificar los primeros parámetros en este comando para especificar HEIGHT y WIDTH y ORIG_FILE_PATH. El resto del comando calcula los diversos tamaños y llama a gs dos veces, luego pdftk. Incluso contará las páginas en su escaneo y luego producirá la especificación de clasificación correcta (para el escenario que di).
Produce algún progreso sobre lo que está haciendo, que se verá así:
Luego, para obtener la imposición de página que necesita para un folleto impreso, simplemente "imprima" pedida.pdf en un tamaño de página personalizado exactamente del tamaño que necesita (en mi ejemplo, 5.5 x 8.5), enviándolo a una "creación de folletos" "(en mi caso, utilicé Crear folleto de Christoph Vogelbusch para Mac en http://download.cnet.com/Create-Booklet/3000-2088_4-86349.html ).
El PDF resultante ahora volverá al tamaño de página original de 11 x 8.5 con 2 páginas por hoja, pero el pedido será tal que pueda imprimirlo a doble cara, encuadernación de borde corto y ¡listo! tendrá una copia impresa que puede fotocopiar y doblar y coser, reproduciendo el folleto original sin desarmar (o incluso necesariamente ver) el original.
¡Espero que esto ayude a alguien!
-C
fuente
Basado en la respuesta anterior de piptas :
En Windows, para dividir archivos PDF de tamaño carta con una sola imagen de portada al principio, lo siguiente funcionó muy bien para mí (tenga en cuenta el uso de [-612 0] en el segundo paso, un valor positivo creó páginas en blanco porque empujó en la dirección incorrecta .)
gswin32c -o left-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Tenga en cuenta el uso de
-dFirstPage=2
que le indica a gs que comience a procesar en la página 2.gswin32c -o right-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [-612 0]>> setpagedevice" -f input.pdf
Esto crea right-secciones.pdf de la misma manera. Y ahora la imagen de portada:
gswin32c -o cover.pdf -sDEVICE=pdfwrite -dLastPage=1 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Luego, como no quería fusionarme con pdftk usando la entrada de página manual, dividí las secciones izquierda y derecha en archivos PDF separados en un nuevo directorio.
Luego me uno a los PDF en ese directorio, alfabéticamente (¡y afortunadamente eso significa que están ordenados en el orden correcto!) Y también ejecuto el resultado a través de ghostscript nuevamente para corregir "Advertencia: número de generación fuera del rango 0..65535, suponiendo 0. " errores producidos por pdftk que ghostscript llamó "itext-paulo-155 (itextpdf.sf.net-lawagie.com)" - también se redujo el tamaño del archivo a la mitad en mi uso. Con un original de 4.5MB, el resultado de pdftk fue de 6.7MB y el reprocesamiento de gswin32c lo redujo a 3.2 MB.
¡Y hemos terminado! Siéntase libre de eliminar la carpeta input_file, cover.pdf, input_temp.pdf, right_sections.pdf y left_sections.pdf. ;-)
fuente
si solo necesita imprimir los archivos PDF del lado izquierdo en un solo documento, y los archivos PDF del lado derecho en un solo documento, entonces el siguiente script basado en la respuesta de Kurt Pfeifle hará el truco (funciona para cualquier altura y anchura):
luego ejecútelo así:
fuente