Додайте метадані XMP до файлу EPS за допомогою Java
Щоб додати метадані XMP до файлу EPS, необхідно виконати кілька кроків:
- Ініціалізуйте вхідний потік для вхідного файлу EPS.
- Створіть екземпляр PsDocument із створеного раніше вхідного потоку.
- Отримайте екземпляр XmpMetadata із PsDocument. Якщо файл EPS не містить метаданих XMP, новий файл буде створено, заповнено значеннями з коментарів метаданих PS і повернено вам.
- Тепер ви можете переглядати значення полів метаданих.
- Ініціалізуйте вихідний потік для вихідного файлу EPS.
- Збережіть файл EPS з новими метаданими XMP.
Наведений нижче фрагмент коду показує, як додати метадані XMP до файлу EPS у Java:
1// Add XMP metadata to EPS document.
2
3// Initialize EPS file input stream
4try (FileInputStream psStream = new FileInputStream(getDataDir() + "add_input.eps")) {
5 // Create PsDocument instance from stream. Given EPS file doesn't contain XMP metadata, but usual metadata does contain.
6 PsDocument document = new PsDocument(psStream);
7
8 String outputFileName = "add_xmp_metadata_out.eps";
9
10 XmpMetadata xmp = null;
11
12 try {
13 // Get XMP metadata. If EPS file doesn't contain XMP metadata we get new one filled with values from PS metadata comments (%%Creator, %%CreateDate, %%Title etc)
14 xmp = document.getXmpMetadata();
15
16 // Check metadata values extracted from PS metadata comments and set up in new XMP metadata
17
18 // Get "CreatorTool" value
19 if (xmp.containsKey("xmp:CreatorTool"))
20 System.out.println("CreatorTool: " + xmp.get("xmp:CreatorTool").toStringValue());
21
22 // Get "CreateDate" value
23 if (xmp.containsKey("xmp:CreateDate"))
24 System.out.println("CreateDate: " + xmp.get("xmp:CreateDate").toStringValue());
25
26 // Get "format" value
27 if (xmp.containsKey("dc:format"))
28 System.out.println("Format: " + xmp.get("dc:format").toStringValue());
29
30 // Get "title" value
31 if (xmp.containsKey("dc:title"))
32 System.out.println("Title: " + xmp.get("dc:title").toArray()[0].toStringValue());
33
34 // Get "creator" value
35 if (xmp.containsKey("dc:creator"))
36 System.out.println("Creator: " + xmp.get("dc:creator").toArray()[0].toStringValue());
37
38 // Get "MetadataDate" value
39 if (xmp.containsKey("xmp:MetadataDate"))
40 System.out.println("MetadataDate: " + xmp.get("xmp:MetadataDate").toStringValue());
41
42 // Update MetadataDate value
43 Date metadataDate = xmp.get("xmp:MetadataDate").toDateTime();
44
45 // Save EPS file with new XMP metadata
46
47 // Create ouput stream
48 try (FileOutputStream outPsStream = new FileOutputStream(getOutputDir() + outputFileName)) {
49 // Save EPS file
50 document.save(outPsStream);
51 }
52 } catch (IOException ex) {
53 }Ви можете завантажити приклади і файли даних з GitHub.