Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Proteger documento PDF con contraseña y limitar permisos desde Java

Proteger documento PDF con contraseña y limitar permisos desde Java

Autor jc mouse jueves, marzo 25, 2021

Los archivos digitales (txt, docx, xlsx, odt, odp, pdf, etc) nos permiten almacenar información el cual en ocasiones, deseamos proteger de la mirada de extraños y para lo cual existen un sinfín de métodos.

En el caso de los archivos PDF existen librerías que permiten proteger este tipo de archivos mediante contraseñas  o inclusive limitando los permisos que el usuario puede realizar sobre estos. Una de estas librerías  es PDFBox el cual es una biblioteca de código abierto que cuenta con un montón de funcionalidades entre los que se encuentra claro esta, la protección de archivos PDF mediante contraseña y es lo que precisamente conoceremos en este post.

Necesitamos:

  • Librería PDFBox, ultima versión a la fecha 2.0.22
  • Un archivo PDF sin contraseña
  • IDE Netbeans

PDFBox nos permite proteger un archivo PDF mediante el uso de una contraseña con 2 tipos de usuario, el primero que seria el propietario del archivo y que gozaría con todos los privilegios de edición, impresión, etc. Y el segundo usuario, al cual se le impondrían algunas restricciones.

A continuación el código para agregar una contraseña a un archivo PDF utilizando la librería PDFBox

import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
/**
 * @see https://www.jc-mouse.net
 * @author mouse
 */
public class MainPass {
    
    public static void main(String[] args) {

        final int KEY_LENGTH = 256;
        
        //Instancia a AccessPermission
        AccessPermission ap = new AccessPermission();        
        
        //Se limitan acciones que el usuario puede realizar
        ap.setCanAssembleDocument(false);
        ap.setCanExtractContent(false);
        ap.setCanExtractForAccessibility(false);
        ap.setCanFillInForm(false);
        ap.setCanModify(false);
        ap.setCanModifyAnnotations(false); 
        ap.setCanPrint(false);
        ap.setCanPrintDegraded(false);
        
        try ( PDDocument document = PDDocument.load(
                new File("X:/mis archivos pdf/Lorem ipsum.pdf"))) {            
            // 123456: Contrasena de propietario para abrir el archivo 
            // con todos los permisos
            // abcdef: Contrasena de usuario para abrir el archivo pero con
            // restricciones
            StandardProtectionPolicy spp = 
                    new StandardProtectionPolicy("123456", "abcdef", ap);
            //longitud de la clave de cifrado
            spp.setEncryptionKeyLength(KEY_LENGTH);
            //Se aplica la proteccion
            document.protect(spp);
            //se actualiza el archivo y se cierra
            document.save(new File("X:/mis archivos pdf/Lorem_ipsum.pdf"));
            document.close();
            System.out.println("Fin");
        } catch (IOException ex) {
            System.err.println("IOException: " + ex.getMessage());
        }

    }

}

donde «X:/mis archivos pdf/Lorem_ipsum.pdf» corresponde a la ruta y nombre de archivo PDF que deseamos proteger.

Ejecutamos el código y cuando intentemos abrir el archivo PDF, veremos como ahora nos solicita el ingreso de una contraseña.

pass pdf

Y si ingresamos la contraseña de propietario podremos ver que contamos con todos los privilegios de edición. impresión, etc.

pdf protected password java

Y si ingresamos con la contraseña de usuario «abcdef», nos veremos limitados en cuando lo que podemos hacer con el archivo PDF.

restricciones a archivos PDF desde Java

enjoy!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Filtros con JMF y una webcam [Proyecto]

Filtros con JMF y una webcam [Proyecto]

En esta oportunidad dejo a consideracion un proyecto para la captura de video desde una webcam, utilizando filtros como...

Blog MVC en PHP (Código Fuente)

Blog MVC en PHP (Código Fuente)

En este post dejo el código fuente de un blog en PHP desarrollado siguiendo el patrón de diseño MVC (Modelo, Vista y Con...

Tabla con imagen de fondo

Tabla con imagen de fondo

En este post personalizaremos una tabla JTable Swing para pintar una imagen de fondo y darle un poco de estilo al encabe...

Reportes y Subreportes con iReport

Reportes y Subreportes con iReport

Cuando creamos reportes en iReport que son un poco complicadas o reportes personalizados, osea, tratando de evitar el cl...

Descargar video de TikTok sin marca de agua

Descargar video de TikTok sin marca de agua

TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...

Crea un efecto Flip en java swing

Crea un efecto Flip en java swing

Entre los correos y mensajes en facebook y whatsapp que me llegan (y de entrada pido perdón a quienes no puedo responder...

Comparte lo que sabes

Categorias

Últimas entradas

Existe una gran cantidad de contenido sobre productividad, trucos, consejos y trabajo y más. Pero, ¿Qué pasa con esos mo...

En este post te enseño a usar una herramienta de Inteligencia Artificial para animar tus fotografias y esto completament...

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

Herramientas

Generador de Enlaces a Whatsapp