Чтение и добавление метаданных XMP в документах EPS/PS с помощью Java
Извлекайте, просматривайте, добавляйте и обновляйте метаданные XMP (Extensible Metadata Platform) в документах EPS и PostScript (PS) с помощью Aspose.Page for Java. Встраивайте стандартные свойства Dublin Core, статистику создания документа, сведения об авторских правах и пользовательские структуры метаданных непосредственно в потоки файлов PostScript, не изменяя базовое визуальное содержимое векторной графики.
Aspose.Page for Java предоставляет высокопроизводительную объектную модель XmpHeaderConverter и XmpMetadata для извлечения существующих метаданных XMP или внедрения новых свойств в файлы EPS/PS.
- Чтобы прочитать такую информацию, как сведения об авторе, даты создания, уведомления об авторских правах и пользовательские атрибуты из файлов EPS, используйте метод
XmpMetadata.add(). - Для редактирования существующих полей метаданных, таких как заголовки документов или история изменений, используйте метод
XmpMetadata.set(). - Для добавления к графическим файлам проприетарных и специфичных для предприятия атрибутов метаданных используйте метод
XmpMetadata.registerNamespace().
Чтение существующих метаданных XMP из файла EPS
Извлекайте и анализируйте стандартные и определяемые пользователем свойства XMP из документа EPS, чтобы просматривать такие поля метаданных, как dc:title, xmp:CreatorTool и 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();
}
}Добавление и внедрение новых метаданных XMP в файл EPS
Внедряйте стандартные свойства метаданных (например, схемы Dublin Core или XMP Basic) в документ EPS и сохраняйте обновленный файл.
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.");
}
}Добавление пользовательских именованных пространств имен и метаданных массивов
Регистрируйте специфичные для предприятия пространства имен XML и храните сложные типы данных, такие как списки массивов, в структуре XMP документа.
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.");
}
}Установка и настройка
Добавьте Aspose.Page for Java в 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. Что такое XPS Print Ticket в Aspose.Page?
XPS Print Ticket — это XML-структура, определенная спецификацией Print Schema. Она непосредственно встраивает инструкции аппаратной печати, такие как ориентация, двусторонняя печать, количество копий, размеры бумаги и выходные лотки, в ZIP-пакет .xps.
2. Можно ли динамически изменять отдельные параметры XML внутри Print Ticket?
Да. Вы можете получить необработанное содержимое XML через XpsPrintTicket.getXml(), изменить узлы или атрибуты DOM с помощью стандартных анализаторов XML Java, а затем повторно назначить измененный билет документу или странице.
3. Что произойдет, если присутствуют одновременно Print Ticket уровня Job и Print Ticket уровня Page?
Print Ticket уровня Page имеет приоритет над Print Ticket уровня Job для конкретной страницы, позволяя разработчикам создавать задания печати со смешанными носителями, например сочетать страницы обложки из картона со стандартными страницами с обычным текстом.