Documentos PDF protegidos por contraseña

16 Mar

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.