Ultimamente estoy comprando algunos libros en formato PDF que incluyen una contraseña para tener acceso a su contenido. A pesar de que dicha contraseña es fácil de recordar empieza a ser un fastidio que cada vez que accedo al libro desde alguno de mis equipos tenga que recordar la contraseña. Y sí, ya sé que un programa como KPDF (de lo mejor que he probado para leer estos documentos) puede emplear el depósito de claves de KDE sin más problemas, pero el caso es que soy de la opinión de que si me he molestado en adquirirlos tengo derecho a eliminar dicha restricción y usarlos tranquilamente.
Introducción
Dentro del paquete
xpdf-utils
se encuentra la utilidad
pdfinfo
con la que mostramos la información pertinente al libro que queremos «limpiar»; empleamos la contraseña de usuario y no la de propietario
victor@sarajevo:~$ pdfinfo -upw PASSWORD Linux_System_Administration_Recipes_A_Problem_Solution_Approach.pdf Creator: Adobe InDesign CS2 (4.0.5) Producer: Adobe PDF Library 7.0 CreationDate: Mon Sep 28 16:23:49 2009 ModDate: Tue Sep 29 14:16:58 2009 Tagged: yes Pages: 282 Encrypted: yes (print:yes copy:yes change:no addNotes:yes) Page size: 540 x 666 pts File size: 4362695 bytes Optimized: no PDF version: 1.6 victor@sarajevo:~$
En este caso se trata de una obra de Juliet Kemp, una autora que me gusta mucho por su estilo directo y sencillo y que suele escribir sobre aspectos de la administración de sistemas que me interesan.
Los métodos que he empleado los he obtenido del texto y los comentarios de un artículo de Elliot Smith, y siempre buscando en los repositorios Debian, versión estable, y por sencillez en los siguientes ejemplos he renombrado el archivo original a
cifrado.pdf
.
qpdf
Según el manual este programa está especializado en efectuar transformaciones de PDF a PDF y su uso en este caso no puede ser más sencillo:
victor@sarajevo:~/tmp$ qpdf --decrypt --password=PASSWORD cifrado.pdf descifrado.pdf victor@sarajevo:~/tmp$
Vemos la información del archivo final:
victor@sarajevo:~/tmp$ pdfinfo descifrado.pdf Creator: Adobe InDesign CS2 (4.0.5) Producer: Adobe PDF Library 7.0 CreationDate: Mon Sep 28 16:23:49 2009 ModDate: Tue Sep 29 14:16:58 2009 Tagged: yes Pages: 282 Encrypted: no Page size: 540 x 666 pts File size: 4337617 bytes Optimized: no PDF version: 1.6 victor@sarajevo:~/tmp$
xpdf-utils
Este es el método principal del artículo de Elliot, que funciona muy bien pero que, como ya avisa, provoca que se pierdan algunas características del documento como los hiperenlaces y el etiquetado que resulta vital desde el punto de vista de la accesibilidad ya que permite lecturas desde dispositivos especiales y cambios en el formato para adaptarse a otros entornos. Si esto no es imprescindible el método aquí descrito es simple y efectivo.
victor@sarajevo:~/tmp$ pdftops -upw PASSWORD cifrado.pdf victor@sarajevo:~/tmp$ ps2pdf cifrado.ps descifrado.pdf victor@sarajevo:~/tmp$ pdfinfo descifrado.pdf Producer: GPL Ghostscript 8.62 CreationDate: Tue Mar 16 11:08:46 2010 ModDate: Tue Mar 16 11:08:46 2010 Tagged: no Pages: 282 Encrypted: no Page size: 595 x 841 pts File size: 3413078 bytes Optimized: no PDF version: 1.4 victor@sarajevo:~/tmp$
pdftk
Escrito en Java parece de lo más prometedor cuando lees la documentación, pero necesita la contraseña del propietario para hacer muchas de las cosas que promete y en mi caso, como es obvio, sólo dispongo de la contraseña de cifrado de usuario.
victor@sarajevo:~/tmp$ pdftk cifrado.pdf input_pw PASSWORD output descifrado.pdf Error: Failed to open PDF file: cifrado.pdf OWNER PASSWORD REQUIRED, but not given (or incorrect) Done. Input errors, so no output created. victor@sarajevo:~/tmp$
Así que no me vale, al menos para lo que pretendo, aunque no dudo de que tenga otros muchos usos.