2009-08-09 11 views
5

Quiero guardar/descargar pdfs del sitio web X y luego combinar todos esos archivos PDF en uno, de modo que sea fácil para mí verlos todos a la vez.combina varios pdfs en linux usando script?

Lo que hice,

  1. obtener archivos PDF desde el sitio web

    wget -r -l1 -A.pdf --no-matriz http://linktoX

  2. combinar archivos PDF en uno

    gs -dNOPAUSE -sDEVICE = pdfwrite -sOUTPUTFILE = Combined_ date +%F .pdf -dBATCH archivo1.pdf archivo2.pdf archivo3.pdf

Mi pregunta/problema es, pensé en automatizar todo esto en un script, por lo que no tengo que hacer esto todos los días. Aquí se agregan nuevos pdfs diariamente en X.

Entonces, ¿cómo puedo hacer el paso 2 anterior, sin dar una lista completa de todos los archivos pdfs, intenté hacer file*.pdf en el paso 2; pero combinó todos los pdfs en orden aleatorio.

siguiente problema es, el número total de archivos * .pdf no es igual todos los días, a veces 5 veces 10 pdfs ... pero lo bueno es que se nombra con el fin file2.pdf file1.pdf ...

Por lo tanto, necesito ayuda para completar el paso 2 anterior, de modo que todos los pdfs se combinen en orden y no tenga que dar el nombre de cada pdf explícitamente

Gracias.

ACTUALIZACIÓN: Esta resuelto el problema

pdftk `ls -rt kanti*.pdf` cat output Kanti.pdf 

hice ls -rt como file1.pdf se descarga primero, y luego file2.pdf y así sucesivamente ... simplemente haciendo ls -t puso file20. pdf en el inicio y archivo1.pdf en último ...

Respuesta

3

También he usado pdftk en el pasado con buenos resultados.

Para una lista de los archivos en orden numérico, puede instruir a una especie de ignorar los primeros $ n - 1 caracteres del nombre de archivo al hacer esto:

ls | sort -n -k 1.$n 

Así que si había archivos * .pdf:

$ ls | sort -n -k 1.5 
file1.pdf 
file2.pdf 
file3.pdf 
file4.pdf 
file10.pdf 
file11.pdf 
file20.pdf 
file21.pdf 
2

He utilizado pdftk antes para concatenaciones como pdftk está disponible para Debian/Ubuntu.

+0

Quiero combinar pdfs por orden; usando * .pdf lo combina en orden aleatorio ... quiero combinar en este orden file1.pdf ... file9.pdf file10.pdf file11.pdf y así sucesivamente ... –

1

Se podría hacer algo como:

GSCOMMAND="gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Combined_date +%F.pdf -dBATCH" 
FILES=`ls file*.pdf | sort -n -k 1.5` 

$GSCOMMAND $FILES 

Esto es suponiendo que los archivos se denominan "file.pdf". Ver también la publicación de alberge.

Hará cosas extrañas a los archivos con espacios en su nombre, por lo que tendrá que agregar escapes si necesita poder manejar nombres con espacios.

estoy realmente curioso lo que otras personas se van a plantear con, ya que esto me parece una solución muy rápida y sucia, pero conseguir mejor gracias a las respuestas de otras personas :)

EDIT

Se utilizó el comando de clasificación numérica para ARCHIVOS según lo sugerido por alberge.

Cuestiones relacionadas