Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Proteger documento PDF con contraseña y limitar permisos desde Java

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

Por 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

Artículos similares

Crear instaladores para programas java con .NET

Continuando la serie de tutoriales para la creación de instaladores para programas escritos en Java, en esta oportunidad[...]

Dimask: La mascara de la Belleza (Descargar)

La Belleza está en la Simetría ¿Qué es lo que nos hace considerar un rostro bello? ¿Está influenciado nuestro criterio p[...]

JLabel: Escalar imagen

El componente swing JLabel nos permite cargar una imagen con la propiedad setIcon, sin embargo la imagen no toma el tama[...]

Ejecutables con Launch4J

Launch4j es un software OpenSource hecho en Java que permite crear ejecutables para programas escritos en ese mismo leng[...]

Conexión a múltiples bases de datos en Laravel

En este tutorial conoceremos una forma de conectar una aplicación en Laravel con tres bases de datos diferentes, 2 en My[...]

Reproducir video con JavaFX y HTML5

JavaFX implementa el control webview que nos permite agregar contenido HTML cargado mediante la clase WebEngine. El comp[...]