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.
pdf
open-source
Tim Alexander
fuente
fuente
Respuestas:
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.exe
o 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.
fuente
Solo tenía que hacerlo hoy en Linux. También debería funcionar para Mac. Ejecute el siguiente comando desde su terminal.
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.
fuente
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
fuente
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? )
fuente
En Linux
Escribi esta linea de comando
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
pdftk
ytree
para esto y en Ubuntu Linux puedes instalarlo con apt:fuente
O use cpdf https://www.coherentpdf.com/ocaml-libraries.html :
fuente