Java で EPS/PS ドキュメントの XMP メタデータを読み取り、追加する
Aspose.Page for Java を使用して、EPS および PostScript (PS) ドキュメントの XMP (Extensible Metadata Platform) メタデータを抽出、検査、追加、更新します。標準の Dublin Core プロパティ、ドキュメント作成統計、著作権情報、カスタムメタデータ構造を、基盤となるベクターグラフィックの視覚的なコンテンツを変更することなく、PostScript ファイルストリームに直接埋め込むことができます。
Aspose.Page for Java は、高性能な XmpHeaderConverter および XmpMetadata オブジェクトモデルを提供し、既存の XMP メタデータを抽出したり、EPS/PS ファイルに新しいプロパティを挿入したりできます。
- EPS ファイルから作成者情報、作成日、著作権表示、カスタム属性などの情報を読み取るには、
XmpMetadata.add()メソッドを使用します。 - ドキュメントのタイトルや変更履歴などの既存のメタデータフィールドを編集するには、
XmpMetadata.set()メソッドを使用します。 - グラフィックファイルに独自の企業固有のメタデータ属性を追加するには、
XmpMetadata.registerNamespace()メソッドを使用します。
EPS ファイルから既存の XMP メタデータを読み取る
EPS ドキュメントから標準およびユーザー定義の XMP プロパティを抽出して解析し、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();
}
}EPS ファイルへの新しい XMP メタデータの追加と挿入
標準のメタデータプロパティ(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. Aspose.Page の XPS Print Ticket とは何ですか?
XPS Print Ticket は、Print Schema 仕様によって定義された XML 構造です。向き、両面印刷、部数、用紙サイズ、出力トレイなどのハードウェア印刷指示を、.xps ZIP パッケージ ファイル内に直接埋め込みます。
2. Print Ticket 内の個々の XML パラメーターを動的に変更できますか?
はい。XpsPrintTicket.getXml() を使用して未加工の XML コンテンツを取得し、標準の Java XML パーサーを使用して DOM ノードまたは属性を操作した後、変更したチケットをドキュメントまたはページに再割り当てできます。
3. Job レベルと Page レベルの両方の Print Ticket が存在する場合はどうなりますか?
特定のページについては、Page レベルの Print Ticket が Job レベルの Print Ticket より優先されます。これにより、開発者は、厚紙の表紙ページと標準のプレーン テキスト ページを組み合わせるなど、異なるメディアを混在させた印刷ジョブを作成できます。