Lectura y adición de metadatos XMP en documentos EPS/PS con Java

Extraiga, inspeccione, añada y actualice metadatos XMP (Extensible Metadata Platform) en documentos EPS y PostScript (PS) utilizando Aspose.Page for Java. Incruste propiedades estándar de Dublin Core, estadísticas de creación del documento, detalles de derechos de autor y estructuras de metadatos personalizadas directamente en los flujos de archivos PostScript sin alterar el contenido visual subyacente de los gráficos vectoriales.

 

Aspose.Page for Java proporciona un modelo de objetos de alto rendimiento XmpHeaderConverter y XmpMetadata para extraer metadatos XMP existentes o inyectar nuevas propiedades en archivos EPS/PS.

  • Para leer información como los datos del autor, las fechas de creación, los avisos de derechos de autor y los atributos personalizados de los archivos EPS, utilice el método XmpMetadata.add().
  • Para editar campos de metadatos existentes, como los títulos de documentos o el historial de modificaciones, utilice el método XmpMetadata.set().
  • Para añadir atributos de metadatos propietarios y específicos de la empresa a archivos gráficos, utilice el método XmpMetadata.registerNamespace().

Lectura de metadatos XMP existentes de un archivo EPS

Extraiga y analice propiedades XMP estándar y definidas por el usuario de un documento EPS para inspeccionar campos de metadatos como dc:title, xmp:CreatorTool y xmp:CreateDate.

import com.aspose.page.xps.XpsDocument;
import com.aspose.page.xps.XpsPrintTicket;

public class ReadXpsPrintTicket {
    public static void main(String[] args) throws Exception {
        // Open existing XPS document
        XpsDocument doc = new XpsDocument("C:/XPSProject/Input/sample.xps");

        // Retrieve the Job-level Print Ticket
        XpsPrintTicket printTicket = doc.getJobPrintTicket();

        if (printTicket != null) {
            System.out.println("Print Ticket found in XPS package.");
            // Print raw XML string content of the Print Ticket
            System.out.println(printTicket.getXml());
        } else {
            System.out.println("No Job Print Ticket associated with this document.");
        }

        doc.close();
    }
}

Adición e inyección de nuevos metadatos XMP en un archivo EPS

Inyecte propiedades de metadatos estándar (como los esquemas Dublin Core o XMP Basic) en un documento EPS y guarde el archivo actualizado.

import com.aspose.page.xps.XpsDocument;
import com.aspose.page.xps.XpsPrintTicket;
import java.io.FileInputStream;

public class AttachJobPrintTicket {
    public static void main(String[] args) throws Exception {
        // Load target XPS document
        XpsDocument doc = new XpsDocument("C:/XPSProject/Input/document.xps");

        // Read custom Print Ticket XML file specifying printer settings
        FileInputStream ticketStream = new FileInputStream("C:/XPSProject/Config/custom_job_ticket.xml");
        XpsPrintTicket customTicket = new XpsPrintTicket(ticketStream);

        // Assign Print Ticket to Job level
        doc.setJobPrintTicket(customTicket);

        // Save updated XPS document
        doc.save("C:/XPSProject/Output/document_with_print_ticket.xps");
        ticketStream.close();

        System.out.println("Job-level Print Ticket attached successfully.");
    }
}

Adición de espacios de nombres personalizados y metadatos de matrices

Registre espacios de nombres XML específicos de la empresa y almacene tipos de datos complejos, como listas de matrices, dentro de la estructura XMP del documento.

import com.aspose.page.xps.XpsDocument;
import com.aspose.page.xps.XpsPage;
import com.aspose.page.xps.XpsPrintTicket;
import java.io.FileInputStream;

public class AttachPagePrintTicket {
    public static void main(String[] args) throws Exception {
        XpsDocument doc = new XpsDocument("C:/XPSProject/Input/multi_page.xps");

        // Get reference to the first page (Cover Page)
        XpsPage coverPage = doc.getPage(1);

        // Load cover-page specific print settings (e.g., Heavyweight Paper Tray)
        FileInputStream coverTicketStream = new FileInputStream("C:/XPSProject/Config/cover_page_ticket.xml");
        XpsPrintTicket coverTicket = new XpsPrintTicket(coverTicketStream);

        // Set Print Ticket on Page 1
        coverPage.setPagePrintTicket(coverTicket);

        // Save compiled XPS package
        doc.save("C:/XPSProject/Output/multi_page_custom_trays.xps");
        coverTicketStream.close();

        System.out.println("Page-level Print Ticket override attached to Page 1.");
    }
}

Instalación y configuración

Añada Aspose.Page for Java a su Maven:

Package Manager Console Command

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-page</artifactId>
    <version>Latest</version>
</dependency>

Preguntas frecuentes

1. ¿Qué es un XPS Print Ticket en Aspose.Page?

Un XPS Print Ticket es una estructura XML definida por la especificación Print Schema. Incorpora instrucciones de impresión del hardware (como orientación, impresión a doble cara, número de copias, dimensiones del papel y bandejas de salida) directamente dentro del archivo de paquete ZIP .xps.

2. ¿Puedo modificar dinámicamente parámetros XML individuales dentro de un Print Ticket?

Sí. Puede recuperar el contenido XML sin procesar mediante XpsPrintTicket.getXml(), manipular los nodos o atributos DOM utilizando analizadores XML estándar de Java y reasignar el ticket modificado al documento o a la página.

3. ¿Qué sucede si están presentes tanto un Print Ticket a nivel de trabajo como uno a nivel de página?

Los Print Tickets a nivel de página tienen prioridad sobre los Print Tickets a nivel de trabajo para esa página específica, lo que permite a los desarrolladores crear trabajos de impresión con diferentes tipos de soporte (por ejemplo, páginas de portada de cartulina combinadas con páginas de texto normal estándar).