Contraseña de usuario, contraseña de propietario, y cuál tienes en realidad
El cifrado de PDF tiene dos contraseñas, y saber cuál sostienes explica casi toda la confusión que rodea al desbloqueo. La contraseña de usuario (así la llama la especificación; todos los visores la llaman contraseña de apertura) controla el descifrado en sí. Sin ella, los flujos de contenido del archivo son texto cifrado ilegible y nada puede mostrarlos. La contraseña de propietario controla en cambio los permisos: imprimir, extraer texto, editar, rellenar formularios, añadir anotaciones.
Un archivo puede llevar las dos, o solo la de propietario. Ese segundo caso es el que saca de quicio a la gente. El documento se abre sin pedir nada, así que no parece bloqueado, y sin embargo imprimir está en gris y el texto no se deja copiar. Eso pasa porque el PDF se cifró con una contraseña de usuario vacía y una de propietario real, y tu visor está respetando educadamente unas marcas que no tiene ninguna obligación de respetar.
Esta herramienta descifra, lo que significa que necesita una contraseña que abra el archivo. Da la de usuario si la tienes, o la de propietario si es la que te dieron. Hay una limitación honesta que señalar: como la contraseña llega como texto dentro de un archivo, y un archivo vacío se rechaza de entrada, no puedes procesar un PDF restringido por propietario sin aportar nada. Necesitas la contraseña de propietario escrita.
Por qué la contraseña llega en un archivo .txt
Todas las herramientas de este sitio se configuran desde un esquema pequeño que admite desplegables, números y casillas. No hay ningún campo de texto libre en él, y mucho menos un campo de contraseña enmascarado, y añadir uno para una sola herramienta significaría una carcasa a medida.
Así que esta reutiliza un patrón que ya existía aquí: el segundo archivo subido lleva la entrada de formato libre. Firmar PDF recibe así una imagen de firma, y rellenar formulario PDF recibe un archivo JSON con los valores de los campos. Aquí subes dos archivos, y la herramienta los ordena por extensión en lugar de por orden, así que da genuinamente igual cuál sueltes primero.
Solo se usa la primera línea no vacía del archivo de texto, y se recorta. Es deliberado: la mayoría de
editores añaden un salto de línea al final, y un pegado en silencio a tu contraseña produciría un
error de contraseña incorrecta que podrías estar mirando diez minutos. La contrapartida es que una
contraseña con espacios significativos al principio o al final no se puede expresar así.
Borra el archivo de texto después. Es una copia en claro de una contraseña en tu carpeta de descargas, que no es su sitio.
Qué le hace qpdf realmente al archivo
El motor es qpdf, una herramienta de código abierto veterana para leer y reescribir la estructura de
un PDF, compilada a WebAssembly. Ejecuta la operación --decrypt, que vuelve a serializar el
documento entero con el diccionario /Encrypt eliminado. La salida no es un PDF al que se le haya
escondido o vaciado la contraseña; es un PDF que nunca estuvo cifrado, en lo que a cualquier lector
futuro respecta. RC4 y AES, tanto de 128 como de 256 bits, se descifran igual.
Como opera sobre el grafo de objetos y no sobre páginas representadas, no se redibuja nada. Esta es la
diferencia importante entre desbloquear y el apaño de imprimir a PDF al que recurre la gente:
imprimir aplana el documento en imágenes o en texto remaquetado, pierde el contenido seleccionable y a
menudo infla el archivo, mientras que --decrypt deja las páginas idénticas byte a byte dentro de un
contenedor nuevo. Si el archivo desbloqueado te parece más grande de lo esperado,
comprimir PDF es el paso siguiente, no un motivo para desconfiar del desbloqueo.
Leer los mensajes de error
Construir esto sacó a la luz un detalle que merece documentarse, porque cambia lo que la herramienta
puede contarte. qpdf sale con código 2 tanto para una contraseña incorrecta como para un archivo que
no es un PDF en absoluto. El código de salida por sí solo es inútil para el diagnóstico; lo que
separa los dos casos es el texto del registro. Así que la herramienta captura la salida de qpdf y la
compara, convirtiendo invalid password en un claro “contraseña incorrecta” y can't find PDF header
o can't find startxref en “esto no parece un PDF válido”.
Capturar esa salida tampoco fue directo. Esta compilación concreta de Emscripten ignora por completo
los ganchos estándar print y printErr del módulo, y lo escribe todo en console.log y
console.error. La herramienta intercambia por tanto esas dos funciones durante la ejecución y las
restaura después. Poco elegante, y la única forma de leer el mensaje que te dice que tu contraseña
estaba mal.
Ni el documento ni su contraseña cruzan la red
Un PDF protegido con contraseña está, por el mero hecho de que alguien se molestó en bloquearlo, cerca de lo más alto de la escala de sensibilidad: declaraciones de impuestos, nóminas, extractos bancarios, resultados médicos, contratos firmados. Subir uno a un desbloqueador del lado del servidor significa entregar a un desconocido el documento confidencial y su llave en la misma petición, y confiar en que se descarten los dos.
Aquí los dos archivos se leen en la memoria de tu navegador y qpdf se ejecuta ahí mismo. Y si lo que quieres es el camino contrario, poner contraseña a un PDF que no la tiene, proteger PDF usa el mismo patrón de archivo de contraseña.
Desbloquear un archivo
- Abre cualquier editor de texto, escribe la contraseña del PDF en la primera línea y guárdalo como
password.txt. - Suelta el PDF bloqueado y el
password.txten la caja de arriba, juntos o uno detrás de otro. - Pulsa desbloquear. El resultado se descarga con tu nombre original y
-unlocked.pdfal final. - Borra el archivo de texto.