Leitura e adição de metadados XMP em documentos EPS/PS com Java

Extraia, inspecione, adicione e atualize metadados XMP (Extensible Metadata Platform) em documentos EPS e PostScript (PS) usando o Aspose.Page for Java. Incorpore propriedades Dublin Core padrão, estatísticas de criação do documento, detalhes de direitos autorais e estruturas de metadados personalizadas diretamente nos fluxos de arquivos PostScript sem alterar o conteúdo visual subjacente dos gráficos vetoriais.

 

O Aspose.Page for Java fornece um modelo de objetos de alto desempenho XmpHeaderConverter e XmpMetadata para extrair metadados XMP existentes ou inserir novas propriedades em arquivos EPS/PS.

  • Para ler informações como detalhes do autor, datas de criação, avisos de direitos autorais e atributos personalizados de arquivos EPS, use o método XmpMetadata.add().
  • Para editar campos de metadados existentes, como títulos de documentos ou histórico de modificações, use o método XmpMetadata.set().
  • Para adicionar atributos de metadados proprietários e específicos da empresa a arquivos gráficos, use o método XmpMetadata.registerNamespace().

Leitura de metadados XMP existentes de um arquivo EPS

Extraia e analise propriedades XMP padrão e definidas pelo usuário de um documento EPS para inspecionar campos de metadados como dc:title, xmp:CreatorTool e 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();
    }
}

Adição e inserção de novos metadados XMP em um arquivo EPS

Insira propriedades de metadados padrão (como esquemas Dublin Core ou XMP Basic) em um documento EPS e salve o arquivo de saída atualizado.

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.");
    }
}

Adição de namespaces nomeados personalizados e metadados de matriz

Registre namespaces XML específicos da empresa e armazene tipos de dados complexos, como listas de matrizes, dentro da estrutura XMP do 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.");
    }
}

Instalação e configuração

Adicione o Aspose.Page for Java ao seu 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>

FAQ

1. O que é um XPS Print Ticket no Aspose.Page?

Um XPS Print Ticket é uma estrutura XML definida pela especificação Print Schema. Ele incorpora instruções de impressão de hardware, como orientação, impressão duplex, número de cópias, dimensões do papel e bandejas de saída, diretamente no arquivo do pacote ZIP .xps.

2. Posso modificar dinamicamente parâmetros XML individuais dentro de um Print Ticket?

Sim. Você pode recuperar o conteúdo XML bruto por meio de XpsPrintTicket.getXml(), manipular os nós ou atributos DOM usando analisadores XML padrão do Java e reatribuir o ticket modificado ao documento ou à página.

3. O que acontece se houver um Print Ticket no nível de Job e outro no nível de Page?

Os Print Tickets no nível de Page têm prioridade sobre os Print Tickets no nível de Job para aquela página específica, permitindo que os desenvolvedores criem trabalhos de impressão com diferentes tipos de mídia, como páginas de capa em papel-cartão combinadas com páginas de texto padrão.