Anotación PDF

El contenido de una página PDF es difícil de editar, pero la especificación PDF define un conjunto completo de objetos que se pueden agregar a las páginas PDF sin cambiar el contenido de la página. Estos objetos se denominan anotaciones y su propósito varía desde marcar el contenido de la página hasta implementar funciones interactivas como formularios.

La mayoría de los visualizadores de PDF permiten la creación y edición de varios tipos de anotaciones, por ejemplo, resaltados de texto, notas, líneas o formas, e independientemente de los tipos de anotaciones que se creen, los visualizadores de PDF que se ajusten a la especificación PDF también deberían admitir la representación de todos los tipos de anotaciones. Sin embargo, cuando se trabaja con un gran conjunto de documentos, el proceso manual de agregar anotaciones se vuelve engorroso y, por lo tanto, una API de programación es una solución viable. Además, analizaremos el uso de Aspose.PDF Cloud SDK for Java para agregar anotaciones a documentos PDF.

Instalación del SDK

Aspose.PDF Cloud SDK for Java es una API de programación que permite a los programadores Java crear, manipular y transformar documentos PDF existentes a otros formatos de documentos compatibles. El Cloud SDK 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>

Para obtener más información, visita Cómo instalar los SDK de Aspose.Cloud.

Además, tenga en cuenta que, para garantizar la privacidad del usuario y la integridad de los datos, todas nuestras API solo son accesibles para personas autorizadas. Por lo tanto, primero debe visitar 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 desde el panel de control y desplácese hacia abajo hasta la sección Credenciales del cliente para ver los detalles de ID de cliente y Secreto de cliente.

Tachar texto usando Java

A veces tenemos la necesidad de marcar cierto contenido dentro del documento como obsoleto sin eliminarlo del documento. El tachado (también conocido como strikeout) se representa con palabras con una línea horizontal en el centro. Esto implica que el texto es incorrecto u obsoleto y que recientemente se eliminó o se marcó como tal. Podemos configurar las configuraciones de las anotaciones tachadas utilizando la propiedad strikethroughSettings. La propiedad strikethroughSettings se utiliza para configurar las propiedades de color, opacidad, autor, tema, fecha de modificación e isLocked de las anotaciones tachadas.

// 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";	        
			        
int pageNumber = 1;
// Crear una región rectangular para la anotación  
Rectangle rect = new Rectangle()
    .LLX(200.)
    .LLY(380.)
    .URX(250.)
    .URY(375.);

List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

List<Point> points = new ArrayList<>();
points.add(new Point().X(132.).Y(380.)); // Top-Left edge of the Strike Through line
points.add(new Point().X(95.).Y(10.));	// Top-Right edge of the strike through line
points.add(new Point().X(130.).Y(25.));
points.add(new Point().X(130.).Y(10.));

StrikeOutAnnotation annotation = new StrikeOutAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.setRichText("Rich Text");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setQuadPoints(points);
annotation.setModified("05/22/2021 00:00:00.000 AM");
			        

List<StrikeOutAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);

AsposeResponse response = pdfApi.postPageStrikeOutAnnotations(sourcePDF, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

Agregar anotación destacada

Resaltar el contenido dentro de un PDF es esencial porque nos permite llamar la atención sobre información importante dentro del documento. Resaltar es efectivo porque primero le pide al lector que seleccione las partes importantes y luego le brinda una forma efectiva de revisar esa información más tarde. Nuestra API en la nube proporciona las capacidades para resaltar contenido dentro de documentos PDF. A continuación, se muestran los pasos para agregar anotaciones destacadas en un archivo PDF.

  • En primer lugar, cree una instancia de PdfApi mientras proporciona los detalles de ClientSecret y ClientId.
  • Creamos una instancia de archivo para cargar un archivo PDF desde el sistema local y luego llamamos al método uploadFile(…) de la clase PdfApi para cargar el documento al almacenamiento en la nube.
  • Ahora cree una instancia de la clase Rectangle para especificar la región rectangular donde se puede agregar la anotación.
  • Luego, cree un ArrayList de tipo Point para almacenar la información sobre los puntos para dibujar HighlightAnnotation.
  • Cree un objeto de la clase HighlightAnnotation y establezca Nombre, Región rectangular, Asunto, Título, QuadPoints y Fecha de modificación de la anotación.
  • El siguiente paso es crear una lista de tipo HighlightAnnotation y agregar el objeto HighlightAnnotation creado anteriormente a esta lista.
  • Por último, llame al método postPageHighlightAnnotations(…) de la clase PdfApi y pase el PDF de origen, el número de página y la lista de anotaciones como argumentos.
Vista previa de anotación destacada

Imagen 1: Resaltar anotación en archivo PDF.

Puede descargar los archivos de muestra utilizados en el ejemplo anterior desde los siguientes enlaces

Cómo agregar anotaciones de línea

De manera similar a la adición de anotaciones de resaltado y tachado, la API también le permite agregar anotaciones de línea dentro de los documentos PDF. Tenemos una clase llamada LineAnnotation para cumplir con este requisito. A continuación, se ofrecen más detalles sobre cómo cumplir con este requisito.

  • En primer lugar, cree una instancia de PdfApi mientras proporciona los detalles de ClientSecret y ClientId.
  • Opcionalmente, creamos una instancia de File para cargar un archivo PDF desde el sistema local y luego llamamos al método uploadFile(…) de la clase PdfApi para cargar el documento al almacenamiento en la nube. En caso de que el archivo ya esté disponible en el almacenamiento en la nube, podemos usarlo.
  • El resto de las propiedades de inicialización del objeto son las mismas que las mencionadas anteriormente para HighlithAnnotation, excepto que necesitamos crear un objeto de la clase LineAnnotation y establecer el punto inicial y final de una línea usando los métodos setStarting(…) y setEnding(…).
// Obtenga ClientID y ClientSecret desde https://dashboard.aspose.cloud/
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
				
// instancia createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// documento PDF de entrada
String sourcePDF = "PdfWithTable.pdf";	        
			    
// Cargar el archivo desde el sistema local
File file = new File("/Users/nayyershahbaz/Downloads/" + sourcePDF);

// Sube el archivo al almacenamiento en la nube
FilesUploadResult uploadResponse = pdfApi.uploadFile(sourcePDF, file, null);

// Número de página donde se agregará la anotación.				
int pageNumber = 1;

// Crear región rectangular para anotación  
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(500.)
    .URX(400.)
    .URY(510.);

// crear objeto de lista de tipo AnnotationFlags
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// Crear objeto Anotaciones de línea
LineAnnotation annotation = new LineAnnotation();

annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setRichText("Rich Text");
annotation.setSubject("Subj");
annotation.setTitle("Title");

// establecer el punto de inicio de la línea
annotation.setStarting(new Point().X(100.).Y(100.));
// Establezca el punto final de la línea
annotation.setEnding(new Point().X(20.).Y(680.));

// Crear una instancia de color para staleblue
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// Establecer el color de la anotación
annotation.interiorColor(color);

// Establecer fecha de modificación de anotación			      
annotation.setModified("05/22/2021 00:00:00.000 AM");
			        
// Crear una instancia de lista de anotaciones de línea
List<LineAnnotation> annotations = new ArrayList<>();
// Agregar objeto LineAnnotation a la lista de Anotaciones de línea
annotations.add(annotation);

// Llamar al método API para agregar una anotación de línea al archivo PDF
AsposeResponse response = pdfApi.postPageLineAnnotations(sourcePDF, pageNumber, annotations, null, null);

Cómo agregar anotaciones circulares en un PDF

Las anotaciones circulares también se utilizan con frecuencia en documentos PDF y la API admite perfectamente este tipo de anotación. Para agregar anotaciones circulares, intente utilizar la clase CircleAnnotation. El código especificado a continuación se puede utilizar para cumplir con este requisito.

// Obtenga ClientID y ClientSecret desde https://dashboard.aspose.cloud/
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
				
// instancia createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// documento PDF de entrada
String sourcePDF = "PdfWithTable.pdf";	        
			    
// Cargar el archivo desde el sistema local
File file = new File("/Users/nayyershahbaz/Downloads/" + sourcePDF);

// Sube el archivo al almacenamiento en la nube
FilesUploadResult uploadResponse = pdfApi.uploadFile(sourcePDF, file, null);
// Número de página donde se agregará la anotación				
int pageNumber = 1;

// Crear una región rectangular para la anotación  
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(700.)
    .URX(300.)
    .URY(500.);

// crear objeto de lista de tipo AnnotationFlags
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// Crear objeto de anotaciones destacadas
CircleAnnotation annotation = new CircleAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setRichText("Rich Text");
annotation.setSubject("Subj");
annotation.setTitle("Title");

// Crear una instancia de color para staleblue
Color color = new Color();
color.setR(0xC7);
color.setG(0xE2);
color.setB(0x6f);
// Establecer el color de la anotación
annotation.interiorColor(color);

// Establecer fecha de modificación de anotación			      
annotation.setModified("05/22/2021 00:00:00.000 AM");
			        
// Crear una instancia de lista de anotaciones destacadas
List<CircleAnnotation> annotations = new ArrayList<>();

// Agregar objeto CircleAnnotation a la lista de Anotaciones de círculo
annotations.add(annotation);

// Llamar al método API para agregar una anotación circular al archivo PDF
AsposeResponse response = pdfApi.postPageCircleAnnotations(sourcePDF, pageNumber, annotations, null, null);
Anotación circular en PDF

Imagen 2:- Anotación circular en archivo PDF.

El documento PDF de entrada y el PDF resultante, como se muestra arriba, se pueden descargar desde los siguientes enlaces:

Consejo rápido

Utilice nuestra Aplicación de anotaciones de PDF en línea gratuita para eliminar todas las anotaciones de su PDF con un solo clic.

Conclusión

En este blog, analizamos varios tipos de anotaciones que actualmente admite Aspose.PDF Cloud SDK para Java. Además de las anotaciones, la API admite una gran cantidad de otras funciones interesantes relacionadas con el formato PDF. Para obtener más información, le recomendamos que explore la Guía para desarrolladores.

Tenga en cuenta que siempre nos esforzamos por brindar el mejor servicio posible a nuestros clientes y agradecemos sus comentarios y sugerencias. Por lo tanto, si tiene algún problema al usar la API o tiene alguna consulta relacionada, no dude en comunicarse con nosotros a través de nuestro Foro de soporte gratuito.

Artículos relacionados

Le recomendamos visitar los siguientes enlaces para obtener más información sobre: