lunes, 15 de octubre de 2007

Lección: Manipular PDFs

En Abril, ya hablamos sobre programas para editar PDFs, pero esto es una miniguía para editar los pdfs desde consola.

En primer lugar necesitaremos el programa pdftk y para ello pondremos:
$ sudo apt-get install pdftk

Esto no es un manual completo. Son los ejemplos más prácticos. Para ver el manual del comando pdftk pondremos:
$ man pdftk
Una vez instalado, y dependiendo lo que queramos hacer procederemos:
Las opciones más importantes son: cat (unir), burst (hace un archivo para cada página), background (le pone un fondo a partir de otro pdf pero el documento de entrada debe tener transparencia, es decir, no ser una imagen sino texto), stamp (pone marca de agua sobre el documento). Otras opciones a utilizar son allow (para dar permisos), input_pw, owner_pw, user_pw (para especificar contraseñas).


Quitar contraseña: pdftk secured.pdf input_pw contraseña output unsecured.pdf

Unir in1.pdf y in2.pdf en un nuevo PDF llamado out.pdf :
pdftk in1.pdf in2.pdf cat output out1.pdf
o (usando abreviaturas):
pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf
o (usando asteriscos):
pdftk *.pdf cat output combined.pdf

Quitar página 13 de in1.pdf al crear out1.pdf:
pdftk in.pdf cat 1-12 14-end output out1.pdf
o
pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf

Unir dos archivos, uno de los cuales tiene contraseña:
pdftk A=secured.pdf 2.pdf input_pw A=contraseña cat output 3.pdf

Se ha de tener en cuenta que el archivo de salida no tendrá contraseña si no se especifica una. Que poner cualquier cifrado al documento quita todos los permisos del archivo de salida (serán 'none') a no ser que se especifiquen. Se pueden dar (o quitar) permisos si el documento está encriptado, o tiene contraseña del autor o del usuario. Si no está cifrado tendrá libertad de copiar e imprimir.

Tipos de permisos del usuario:
Printing Calidad máxima de impresión
DedradedPrinting Baja calidad de impresión
ModifyContents Modificar contenido (permite ensamblar)
Assembly Ensamblar
CopyContents Copiar contenido
ScreenReaders Lector de pantalla
ModifyAnnotations Modificar notas (permite rellenar)
FillIn Rellenar
AllFeatures Todos los permisos

Entre otras cosas, puede rotar páginas o documentos completos. También se pueden unir páginas pares o impares poniendo even u odd, pero para eso leer manual. FALLOS: No acepta nombres de archivo unicode, sino ascii, por lo que conviene quitar tildes y eñes.

Este programa no trata de crackear la contraseña de un PDF, sino, una vez conocida la contraseña de usuario, convertir a un documento sin contraseña. Otra opción no tan buena para quitar contraseña es mediante el programa pdf2ps convertir el pdf con contraseña a ps sin contraseña (se ha de conocer la contraseña) y luego se podría volver a convertir a pdf sin contrseña gracias a ps2pdf, el problema es que el archivo ps no convierte enlaces y casi cualquier cosa que no salga por la impresora, puesto que es el archivo típico de impresión.


#Actualización:
Novedades, resulta que hay otro comando (o más bien una suite) que manipula los pdf. No es más fácil de manejar y en general (para mi gusto) no es mejor que pdftk pero tiene opciones más avanzadas. La suite se llama pdfjam y se puede instalar de la misma forma. Con el comando pdfnup puedes poner varias páginas en una misma hoja, pero también puedes manejar márgenes, lo que la hace ideal para dar formato de libro, dar margen para hacer perforaciones, reducir a escala un pdf... la página más interesante que habla sobre la suite es ésta. La suite tiene un comando, pdf90, para girar 90º en sentido antihorario (en cambio con pdftk tienes más posibilidades); también tienes pdfjoin para unir varios pdf. No la he usado pero pdfnup pinta pero que muy bien, especial para imprimir transparencias 2x2, o hacer composiciones 2x1 muy útiles si el tamaño de letra lo permite. Combinado con la opción pares/impares de pdftk (imprimir por delante y detrás) podemos ahorrar 4 veces más papel.

No hay comentarios: