Java에서 EPS/PS 문서의 XMP 메타데이터 읽기 및 추가
Aspose.Page for Java를 사용하여 EPS 및 PostScript (PS) 문서에서 XMP (Extensible Metadata Platform) 메타데이터를 추출, 검사, 추가 및 업데이트합니다. 기본 벡터 그래픽 콘텐츠를 변경하지 않고 표준 Dublin Core 속성, 문서 생성 통계, 저작권 정보 및 사용자 지정 메타데이터 구조를 PostScript 파일 스트림에 직접 포함할 수 있습니다.
Aspose.Page for Java는 기존 XMP 메타데이터를 추출하거나 EPS/PS 파일에 새 속성을 삽입할 수 있는 고성능 XmpHeaderConverter 및 XmpMetadata 객체 모델을 제공합니다.
- 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보다 우선합니다. 이를 통해 개발자는 카드 용지 표지 페이지와 일반 일반 텍스트 페이지를 혼합하는 등 다양한 미디어를 사용하는 인쇄 작업을 생성할 수 있습니다.