Modificando la página XPS en eventos | Java

Comprender el enfoque basado en eventos en la programación

El enfoque basado en eventos en programación es un paradigma centrado en los eventos y su manejo. En este modelo, el flujo del programa está dictado por eventos, que pueden incluir acciones del usuario (como clics del mouse o pulsaciones de teclas), notificaciones generadas por el sistema o mensajes de otras aplicaciones. A continuación se presentan algunos aspectos clave del enfoque basado en eventos:

En general, el enfoque basado en eventos es un método eficaz para gestionar interacciones y flujos de trabajo dentro de un programa, lo que lo hace especialmente adecuado para aplicaciones que exigen capacidad de respuesta e interacciones del usuario.

La conversión de documentos XPS y sus eventos.

Cuando necesita modificar una página específica de un documento XPS utilizando la API Aspose.Page, normalmente selecciona el documento activo (si hay varios documentos en el archivo XPS), selecciona la página activa y luego aplica los cambios.

Ahora, digamos que necesita implementar cambios repetidos en todas las páginas de un archivo XPS y posteriormente convertir el resultado a formato PDF o de imagen. Ejemplos de tales cambios podrían incluir agregar una marca de agua a las páginas o insertar hipervínculos de navegación. El método sencillo para realizar dichos cambios implica recorrer los documentos del paquete XPS, recorrer las páginas del documento activo actual y luego, finalmente, aplicar los cambios. Así, el código para realizar esta tarea quedaría de la siguiente manera:

 1for (int i = 1; i <= document.getDocumentCount(); i++)
 2{
 3    document.selectActiveDocument(i);
 4    for (j = 1; j <= document.getPageCount(); j++)
 5    {
 6        document.selectActivePage(j);
 7        // Your changes ...
 8    }
 9}
10document.saveAsPdf("file-name.pdf", saveOptions);

Si también necesita realizar algunos cambios irregulares antes de aplicar los repetidos, este enfoque puede generar confusión o recorridos excesivos a través de documentos y páginas. Además, estos bucles pueden parecer algo engorrosos. Cuando convierte un documento XPS a PDF o una imagen, el proceso ocurre una página a la vez. Mientras el trabajo de conversión se prepara para procesar la página siguiente, desencadena un evento de “página anterior”. El usuario puede definir el comportamiento (manejo de eventos) de dichos eventos ampliando la clase BeforePageSavingEventHandler, aprovechando así algunas de las ventajas analizadas en la sección introductoria de este artículo.

Ejemplo de cómo agregar hipervínculos de navegación

En esta sección, presentaremos un ejemplo que involucra hipervínculos de navegación. Y para complicar un poco más la tarea, convertiremos sólo un subconjunto de todas las páginas a PDF, según lo definido por el método PdfSaveOptions.setPageNumbers().

La clase de controlador de eventos

A continuación se muestra la extensión de la clase BeforePageSavingEventHandler:

La clase de controlador debe conocer las páginas que pretendemos guardar como PDF para poder establecer los destinos de hipervínculo correctos. En consecuencia, el constructor debe tomar la propiedad de matriz getPageNumbers() de las opciones como argumento. Si se proporciona la matriz de números de página, creamos una colección ordenada de ellos, excluyendo los duplicados al mismo tiempo. Además, la clase necesita un objeto XpsFont que contenga los datos de fuente para el texto del hipervínculo.

El método handle() anulado es donde sucede todo. El argumento del método es un objeto que contiene la API de modificación para la página actual, el número de documento dentro del paquete XPS, el número de página absoluto en todos los documentos, el número de página relativo dentro del documento actual (que es igual al número anterior si solo hay un documento en el paquete) y el número de página de salida (que es igual al número de página absoluto cuando convertimos el paquete completo).

La lógica de los siguientes dos bloques “if” es bastante simple. Analiza el argumento del evento getOutputPageNumber() para omitir algunos de los enlaces cuando corresponda: los enlaces [Primero] y [Anterior] no se agregarán a la primera página, mientras que [Siguiente] y Los enlaces [Último] no aparecerán en la última página. La lógica también está diseñada para adaptarse a ambos escenarios, ya sea que se especifiquen o no los números de página.

Después de los bloques “if”, hay un código que agrega un número de página en la esquina inferior derecha de la página.

La última línea agrega la entrada del esquema de la página, que es el elemento que se mostrará en el panel de navegación de un visor de PDF (si es compatible).

Código para la conversión

Ahora que el controlador de eventos “antes de la página” está definido, podemos escribir el código para la conversión del documento:

Abrimos un archivo XPS y luego creamos un objeto de flujo con el archivo de datos de fuente. A continuación, creamos una instancia de la clase PdfSaveOptions y especificamos los números de página que necesitamos convertir. La siguiente línea “conecta” el controlador de eventos “antes de la página” al trabajo de conversión a través de la colección getBeforePageSavingEventHandlers().

Todo lo que queda por hacer ahora es ejecutar la conversión a PDF usando el método saveAsPdf() del documento.

Conclusión

En este artículo, cubrimos los aspectos fundamentales del enfoque basado en eventos en programación, examinamos el método directo para modificar páginas de un documento XPS y exploramos una técnica más avanzada para realizar cambios repetidos en todas las páginas de salida durante el proceso de conversión. , utilizando como ejemplo la inserción de hipervínculos de navegación.

Para ver los ejemplos completos, explore nuestro Proyecto de ejemplo.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.