style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

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();

Imagen de luxspes

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:

 PdfReader reader = new PdfReader(inputFile);
      PdfEncryptor.encrypt(reader, new FileOutputStream(outputFile), null,
          null, PdfWriter.AllowAssembly | PdfWriter.AllowCopy
              | PdfWriter.AllowDegradedPrinting | PdfWriter.AllowFillIn
              | PdfWriter.AllowModifyAnnotations | PdfWriter.AllowModifyContents
              | PdfWriter.AllowPrinting | PdfWriter.AllowScreenReaders, false);

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">