Extrae la primera página de múltiples archivos PDF

17

Tengo alrededor de 500 archivos PDF para revisar y extraer la primera página de. Luego deben pasar por un proceso de conversión que requiere mucho tiempo, por lo que esperaba intentar ahorrar algo de tiempo mediante un proceso por lotes para extraer solo la primera página de los 500 pdf y colocarlo en un nuevo pdf. He tenido que hurgar en Acrobat pero no puedo encontrar ningún método real para hacerlo para varios archivos. ¿Alguien sabe de otros programas o métodos que esto podría lograrse? El código libre y abierto es obviamente más favorable :)

EDITAR: De hecho, he tenido éxito usando GhostScript para extraer solo una página. Ahora estoy viendo cómo agrupar eso y tomar la lista de archivos y usarlos.

Tim Alexander
fuente
¿Qué implican los otros pasos en el proceso de conversión?
Ignacio Vazquez-Abrams
Sobre tu edición, mira mi edición.
frabjous

Respuestas:

29

Usando pdftk ...

En mac y linux desde la línea de comandos.

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

En Windows, puede crear un archivo por lotes. Abra el Bloc de notas, pegue esto dentro:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

Es posible que deba reemplazar "pdftk.exe" con la ruta completa a pdftk, por ejemplo, "C:\Program Files\pdftk\pdftk.exeo lo que sea. (No uso Windows, así que no lo sé).

Guárdelo con una extensión que termine en .bat, suéltelo en la carpeta con los PDF y haga doble clic.

Puedes hacer lo mismo con Ghostscript, sí.

Veamos. Para Mac y Linux (todos de una línea):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

No estoy exactamente seguro de cuál sería el comando correspondiente para un archivo por lotes de Windows. Mi mejor suposición (--No tengo ventanas, así que no puedo probar--):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

Verifique que la ruta al ejecutable de su script fantasma sea correcta, y bueno, no lo he probado ya que no uso Windows.


EDITAR: OK, me acabo de dar cuenta de que probablemente no quieras 500 PDF de 1 página, sino un solo PDF que los combine a todos. Simplemente ejecute lo anterior, y eso le dejará con 500 archivos PDF de 1 página. Para combinarlos usando pdftk ... en mac y linux:

pdftk *-page1.pdf cat output combined.pdf

Creo que probablemente sea lo mismo en Windows, excepto que tal vez necesite la ruta completa a pdftk, como se indicó anteriormente. Simplemente puede agregar esa línea después de la línea anterior en su archivo por lotes.

Con Ghostscript ... en mac y linux:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

Y probablemente sea lo mismo en Windows, excepto reemplazar "gs" al principio con la ruta completa a gswin32c.exe, como se indicó anteriormente.

Puede haber una forma de ghostscript para hacer ambas cosas en un solo paso, pero ahora soy demasiado vago para resolverlo.

Si el orden en que se combinan es importante, necesitaremos más información.

precioso
fuente
Ese es el comando que estaba buscando. ¡He pasado la tarde leyendo sobre si bucles en Linux! Su comando inicial es el correcto, es decir, necesito 500 archivos PDF de una sola página. Había logrado obtener todas las primeras páginas en un solo pdf, pero la conversión a Excel lo hace inmanejable. Mis usuarios tienen algunos requisitos muy específicos de solicitud y diseño, lo que es exasperante pero desafiante. ¡¡Gracias por tu ayuda!!
Tim Alexander
2

Solo tenía que hacerlo hoy en Linux. También debería funcionar para Mac. Ejecute el siguiente comando desde su terminal.

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr envía trabajos a la impresora.

Tenga en cuenta el uso de * caracteres en el comando. Esto ejecutaría el comando para todos sus archivos PDF en el directorio.

vivek_ganesan
fuente
Como señala, esto enviará trabajos a la impresora. Eso no es lo que está pidiendo OP.
Nick K9
1

Creo que podría usar una impresora virtual pdf, como pdf-forge.

Simplemente "imprime" la primera página, ahora en una Mac y no puedo probarla, pero estoy bastante seguro de que puede hacerlo más de una en una.

¡¡Buena suerte!!

Trufa

Trufa
fuente
gracias por los consejos sobre esos. Estos me han llevado a GhostScript, que parece que podría hacer lo que quiero. Gracias
Tim Alexander
@Tim Alexander, no hay problema en absoluto!
Trufa
0

en cuanto al comando de archivo por lotes de Windows (.bat) (%% es para variables en un archivo bat)

extracción de la primera página de pdf como jpg con resolución / tamaño reducido

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(en la publicación anterior, sOutputFile se escribió incorrectamente ... y con la ruta actual de la instalación estándar de gs x86)

(también mira ¿Cómo usar Ghostscript para convertir PDF de varias páginas en un solo JPG? )

ebricca
fuente
0

En Linux

Escribi esta linea de comando

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

Pero hace el trabajo, lo probé, también funciona con tantos niveles de carpetas que tenga. Solo asegúrese de ejecutarlo en la raíz de la estructura de carpetas. Cada carpeta tendrá para cada archivo pdf un pdf adicional que termine con.firstpage.pdf

Necesitas pdftky treepara esto y en Ubuntu Linux puedes instalarlo con apt:

sudo apt install pdftk tree
Eduard Florinescu
fuente