
Tenemos la necesidad de eliminar detalles confidenciales de los archivos PDF debido a la confidencialidad de los datos, por lo que generalmente redactamos (eliminamos texto, imágenes, etc.) de una determinada región de la página de un documento PDF. Sin embargo, cuando trabajamos con un conjunto grande de documentos, necesitamos usar API para cumplir con este requisito.
En este artículo, analizaremos los pasos sobre cómo redactar PDF en línea usando la clase RedactionAnnotation de Aspose.PDF Cloud SDK para Java.
- Instalación del SDK
- Agregar anotación de redacción mediante Java
- Leer las anotaciones de redacción de la página
- Actualizar la anotación de redacción existente
Instalación del SDK
Aspose.PDF Cloud SDK for Java es una API de programación específica para desarrolladores de Java y está construida sobre la API de Aspose.PDF Cloud. Nuestras API de Cloud se pueden usar desde cualquier plataforma sin necesidad de instalar ningún software en particular. Sin embargo, para usar el SDK, primero debe instalarlo en el sistema.
El SDK de Cloud está disponible para descargar en Maven y GitHub. Ahora, agregue los siguientes detalles en su archivo pom.xml para descargar y usar Aspose.Pdf.jar en su proyecto de compilación de Maven.
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf-cloud</artifactId>
<version>21.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Una vez instalado el SDK, el siguiente paso es obtener su ID de cliente y su secreto de cliente personalizados. Visite el panel de control de Aspose.Cloud y, si tiene una cuenta de GitHub o Google, simplemente regístrese. De lo contrario, haga clic en el botón Crear una nueva cuenta y proporcione la información requerida. Ahora inicie sesión en el panel de control con sus credenciales y expanda la sección Aplicaciones. Desplácese hacia abajo hasta la sección Credenciales de cliente para ver los detalles de ID de cliente y secreto de cliente.
Agregar anotación de redacción mediante Java
En la sección que aparece a continuación, explicamos los pasos sobre cómo agregar un cuadro rectangular para eliminar el contenido de archivos PDF usando Aspose.PDF Cloud SDK para Java.
- En primer lugar, debemos crear un objeto de PdfApi mientras pasamos los detalles de ClientId y ClientSecret obtenidos del panel de Aspose.Cloud.
- En segundo lugar, cree un objeto de la clase Rectángulo para especificar la región en la página donde se agregará la anotación.
- En tercer lugar, seleccione el valor predeterminado de la enumeración AnnotationFlags y agréguelo a la Lista de tipo AnnotationFlags.
- Ahora cree una instancia de la clase RedactionAnnotation y configure la región rectangular usando el método setRect(…).
- Establezca la alineación horizontal utilizando el método setHorizontalAlignment(…) y seleccione Centro en la enumeración HorizontalAlignment.
- Para rellenar el color dentro de la anotación, utilice el método setFillColor(…) y pase el objeto Color.
- Establezca la última fecha de modificación de la anotación utilizando el método setModified(…).
- Penúltimo, cree una Lista de tipo RedactionAnnotation y agregue el objeto RedactAnnotation a esta lista.
- Por último, llame al método postPageRedactionAnnotations(…) de PdfApi y pase el nombre del archivo de origen y el número de página donde se debe agregar la anotación. Además, pase RedactionAnnotation List como argumento para iniciar el proceso de redacción.
// Obtenga ClientID y ClientSecret desde https://dashboard.aspose.cloud/
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
// instancia createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// documento PDF de entrada
String sourcePDF = "PdfWithTable.pdf";
// Página de PDF para colocar anotación
int pageNumber = 1;
// Crea un objeto rectangular para especificar la región de anotación redactada.
// La región se calcula desde la parte inferior izquierda de la página.
Rectangle rect = new Rectangle()
// La unidad de medida es el punto
.LLX(100.)
.LLY(700.)
.URX(200.)
.URY(600.);
// crear matriz AnnotationFlags
List<AnnotationFlags> flags = new ArrayList<>();
// Establezca AnnotationFlag en el valor predeterminado
flags.add(AnnotationFlags.DEFAULT);
// crear una ArrayList de puntos
List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));
// crear objeto Redact Annotation
RedactionAnnotation annotation = new RedactionAnnotation();
// Establezca el nombre de la anotación.
// Es útil cuando tenemos múltiples anotaciones en un documento.
annotation.setName("Name");
// Establezca la región rectangular para Redactar anotación
annotation.setRect(rect);
annotation.setFlags(flags);
// Establecer la alineación horizontal como centro
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Establezca el ZIndex en 1.
annotation.setZindex(1);
// Definir el color SlateBlue en código hexadecimal
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// Especifica el color de relleno para la anotación
annotation.setFillColor(color);
// La fecha y hora en que se modificó la anotación por última vez.
annotation.setModified("05/21/2021 12:00:00.000 AM");
// Establezca una matriz de 8xN números que especifiquen las coordenadas
// de la región de contenido que se pretende eliminar.
annotation.setQuadPoint(points);
// Crea un objeto de lista de tipo RedactAnnotation
List<RedactionAnnotation> annotations = new ArrayList<>();
// Agregue el objeto Anotaciones creado anteriormente a la matriz RedactAnnotation
annotations.add(annotation);
// Agregar RedactAnnotation al documento PDF
AsposeResponse response = pdfApi.postPageRedactionAnnotations(sourcePDF, pageNumber, annotations, null, null, true);
assertEquals(200, (int)response.getCode());

Imagen 1:- Anotación redactada agregada al archivo PDF.
Descargue los archivos de muestra utilizados en el ejemplo anterior desde
Leer las anotaciones de redacción de la página
Aspose.PDF Cloud SDK para Java también ofrece la posibilidad de leer la información relativa a las anotaciones de Redact existentes en un documento PDF. Los pasos que se indican a continuación definen cómo leer los detalles de las anotaciones mediante Java.
// Obtenga ClientID y ClientSecret desde https://dashboard.aspose.cloud/
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
// instancia createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// documento PDF de entrada
String sourcePDF = "PdfWithTable.pdf";
// Obtener anotaciones de redacción de documentos
RedactionAnnotationsResponse responseAnnotations = pdfApi.getPageRedactionAnnotations(sourcePDF,1, null, null);
assertEquals(200, (int)responseAnnotations.getCode());
// Imprima el recuento de anotaciones disponibles en el documento
System.out.println(responseAnnotations.getAnnotations().getList().size());
Actualizar la anotación de redacción existente
Si un documento PDF ya contiene anotaciones de redacción, también podemos actualizarlas mediante la API. A continuación, se detalla cómo actualizar las anotaciones existentes en un documento PDF.
- Cree una instancia de PdfApi mientras pasa los detalles del ID de cliente y del secreto de cliente como argumentos.
- Crea un objeto Rectángulo para definir la región de anotación. Se calcula desde la parte inferior izquierda del documento y la unidad predeterminada es el punto.
- Cree una lista AnnotationFlags y agregue el valor AnnotationFlags.DEFAULT a la lista.
- Ahora necesitamos crear el objeto RedactionAnnotation y llamar al método setRect(…) para definir la región rectangular de la anotación.
- Utilice el método setModified(…) para establecer la última fecha de modificación de la anotación.
- Llame al método getDocumentRedactionAnnotations(…) de la llamada PdfApi para leer la lista de anotaciones del documento.
- Obtenga un objeto de anotación específico utilizando responseAnnotations.getAnnotations().getList().get(0).getId().
- Por último, llame al método putRedactionAnnotation(…) de la clase PdfApi para actualizar la anotación de redacción existente en el archivo PDF.
// Obtenga ClientID y ClientSecret desde https://dashboard.aspose.cloud/
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
// instancia createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// documento PDF de entrada
String sourcePDF = "PdfWithAnnotations.pdf";
// Crear región rectangular para anotación
Rectangle rect = new Rectangle()
.LLX(200.)
.LLY(120.)
.URX(150.)
.URY(100.);
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));
// crear objeto de anotación de redacción
RedactionAnnotation annotation = new RedactionAnnotation();
// Establezca el nombre para la anotación
annotation.setName("Name Updated");
// Establezca la región rectangular para la anotación
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.setZindex(1);
annotation.setModified("01/01/2018 12:02:03.000 AM");
annotation.setQuadPoint(points);
// Definir el color SlateBlue en código hexadecimal
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// Especifica el color de relleno para la anotación
annotation.setFillColor(color);
// Obtener anotación existente del documento
RedactionAnnotationsResponse responseAnnotations = pdfApi.getDocumentRedactionAnnotations(sourcePDF, null, null);
assertEquals(200, (int)responseAnnotations.getCode());
// obtener la anotación en el índice 0
String annotationId = responseAnnotations.getAnnotations().getList().get(0).getId();
// Actualizar la anotación en el índice 0
AsposeResponse response = pdfApi.putRedactionAnnotation(sourcePDF, annotationId, annotation, null, null, true);
assertEquals(200, (int)response.getCode());

Imagen 2:- Anotación redactada actualizada.
Los archivos de recursos utilizados en el ejemplo anterior se pueden descargar desde los siguientes enlaces
conclusión
En este artículo, hemos analizado los pasos para redactar información confidencial de documentos PDF. Además de la anotación de redacción, la API admite una gran cantidad de otras funciones de anotación y sus detalles se pueden encontrar en Trabajar con anotaciones. Puede considerar visitar la Página de inicio del producto para obtener más información sobre sus capacidades. Si tiene alguna consulta relacionada, no dude en comunicarse a través del Foro de soporte gratuito del producto.