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:
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.
Y si ingresamos la contraseña de propietario podremos ver que contamos con todos los privilegios de edición. impresión, etc.
Y si ingresamos con la contraseña de usuario «abcdef», nos veremos limitados en cuando lo que podemos hacer con el archivo PDF.
enjoy!
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! :)
Inspeccionando los cientos de marcadores que tenia en mi firefox, me encontre un enlace web con una interesante clase pa...
Gson es una biblioteca de código abierto para Java desarrollado por Google Inc que permite la serialización y deserializ...
La Inteligencia Artificial (AI – Artificial Intelligence) estará presente en casi cada aspecto de nuestra vida en...
Tor es la forma más fácil de navegar por internet de una manera segura y anónima, Tor cuenta con su propio navegador «T...
Los gráficos de líneas muestran una serie como un conjunto de puntos conectados mediante una línea. Los valores se repre...
El componente swing JLabel nos permite cargar una imagen con la propiedad setIcon, sin embargo la imagen no toma el tama...
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...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...