Asignar password de impresión/guarda a archivo PDF
¿Alguien sabe como asignarle password de impresión/guarda a un archivo PDF desde java?.
Requiero asignarle un password a un archivo PDF desde java que al momento de intentar imprimir o guardar una copia del archivo, solicite el password asignado.
He tratado con Itext pero al parecer solo se le puede asignar contraseña de apertura.
De antemano muchas gracias.
- Inicie sesión o regístrese para enviar comentarios
Solución ...
Esto se puede hacer de la siguiente manera:
Con el mismo objeto PdfStamper en su método setEncryption, donde se le coloca la contraseña de apertura, en el siguente campo se coloca la contraseña para los permisos del archivo PDF, ademas de generar el PDF sin privilegios de impresión, copia etc.
PdfReader reader = new PdfReader(archivo.getPath()); //Crea lector de PDF
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(archivoDestino));
// contraseña de apertura | contraseña de permisos (impresion)
stamper.setEncryption("pwd_apertura".getBytes(), "pwd_permisos".getBytes(),0, PdfWriter.STRENGTH128BITS);
stamper.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
stamper.setFullCompression(); //COMPRIME EL TAMAÑO DEL PDF
stamper.close();
PDF: Seguridad de juguete
Es importante recordar que los privilegios de impresión, copia etc de un PDF son facilismos de quitar, y no proporcionan verdadera seguridad. Si quieres un PDF verdaderamente seguro, tienes que encriptarlo de forma que no sea posible ver su contenido sin contraseña, por que si puedes verlo, entonces quitarle la contraseña de copia, impresion, etc, etc es cosa de mas o menos 6 lineas de código en Java: