如何使用 GroupDocs.Metadata for Java 提取 XMP 元資料
在現代數位工作流程中,快速且可靠地 提取 XMP 元資料,可能決定資產庫是否可搜尋,或是變成混亂的檔案堆。本教學將逐步說明設定函式庫、載入檔案,以及提取基本、Dublin Core 與 Photoshop 專屬的 XMP 包,讓您今天即可在 Java 應用程式中整合豐富的元資料。
快速答案
- 哪個函式庫在 Java 中處理 XMP? GroupDocs.Metadata for Java.
- 最低 Java 版本? JDK 8 或以上。
- 我能讀取 PNG 和 JPEG 檔案嗎? 可以,兩者皆即時支援。
- 生產環境需要授權嗎? 需要,必須使用完整或臨時授權。
- API 參考文件在哪裡? 在官方 GroupDocs.Metadata 文件網站上。
什麼是 XMP 元資料?
XMP(可擴充元資料平台,Extensible Metadata Platform)是一種 ISO 標準格式,用於將結構化的元資料直接嵌入媒體檔案內。它可實現跨應用程式的互通性,並在不更改原始內容的情況下持久儲存資料。透過在檔案內儲存創作者、版權、相機設定與自訂標籤等資訊,XMP 確保元資料隨資產一起流動,簡化跨系統的目錄編製與搜尋。
為何使用 GroupDocs.Metadata for Java?
GroupDocs.Metadata 支援 30 多種檔案格式(包括 PNG、JPEG、TIFF 與 PSD),且可在不將整個文件載入記憶體的情況下處理高達 2 GB 的檔案,較一般解析器可減少 30 % 的 CPU 使用率。因此非常適合大型數位資產管理(DAM)系統。
前置條件
- Java Development Kit (JDK) 8+ 已安裝。
- Maven 用於相依性管理。
- 具備 Java I/O 與物件導向程式設計的基本知識。
如何設定 GroupDocs.Metadata for Java?
首先,將 GroupDocs 的儲存庫與函式庫相依性加入您的 Maven pom.xml。這可確保 Maven 能自動解析套件並保持最新,簡化未來的升級與安全性修補。更新 pom.xml 後,執行 mvn clean install 下載所需的 JAR,並驗證設定是否成功。
<!-- ```xml
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/metadata/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-metadata</artifactId>
<version>24.12</version>
</dependency>
</dependencies>
``` -->
如果您偏好手動方式,可從官方發行頁面下載最新的 JAR:
GroupDocs.Metadata for Java releases
取得授權
- 免費試用 – 評估全部功能,期限 30 天。
- 臨時授權 – 開發期間無限制使用。
- 完整授權 – 生產環境部署必須使用。
基本初始化
Metadata 是所有操作的入口點。它代表單一檔案,並提供存取其內嵌 XMP 套件的功能。
// ```java
import com.groupdocs.metadata.Metadata;
import com.groupdocs.metadata.core.IXmp;
Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/PngWithXmp.png");
// Always ensure resources are freed up after usage
metadata.dispose();
## 如何提取基本 XMP 元資料?
載入影像,開啟其 XMP 套件,並讀取常見屬性,如創建工具與時間戳記。
```java
// ```java
Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/PngWithXmp.png");
```java
// ```java
IXmp root = (IXmp) metadata.getRootPackage();
if (root.getXmpPackage() != null) {
var xmpBasic = root.getXmpPackage().getSchemes().getXmpBasic();
}
```java
// ```java
if (xmpBasic != null) {
String creatorTool = xmpBasic.getCreatorTool();
String createDate = xmpBasic.getCreateDate();
String modifyDate = xmpBasic.getModifyDate();
// Use the extracted properties as needed
}
## 如何提取 Dublin Core XMP 元資料?
Dublin Core 綱要儲存標準化的描述元素,如標題、創作者與主題。可透過 `DublinCorePackage` 類別存取。
```java
// ```java
var dublinCore = root.getXmpPackage().getSchemes().getDublinCore();
```java
// ```java
if (dublinCore != null) {
String format = dublinCore.getFormat();
String coverage = dublinCore.getCoverage();
// Use the extracted properties as needed
}
## 如何提取 Photoshop 專屬的 XMP 元資料?
Photoshop 會嵌入額外資訊,如色彩模式、解析度與圖層數量。可透過 `PhotoshopPackage` 取得這些值。
```java
// ```java
var photoshop = root.getXmpPackage().getSchemes().getPhotoshop();
```java
// ```java
if (photoshop != null) {
String colorMode = photoshop.getColorMode();
// Use the extracted properties as needed
}
## 實務應用
- **數位資產管理** – 依創作者、版權或相機設定為影像加上標籤並搜尋。
- **自動化出版流程** – 在發佈至網站相簿前注入或修改 XMP。
- **分析** – 彙總數千檔案的元資料,以發掘使用趨勢。
## 效能考量
`Metadata` 類別提供對檔案元資料與 XMP 包的存取。讀取完畢後請立即釋放 `Metadata` 物件,以釋放原生資源。`LoadOptions.LAZY` 讓函式庫延遲載入元資料,降低記憶體使用。使用 `Metadata.load(InputStream)` 串流大型檔案,可減少堆積記憶體佔用。大量讀取小檔案時,重複使用同一個 `Metadata` 實例,可減少物件建立的開銷。
## 常見陷阱與故障排除
| 症狀 | 可能原因 | 解決方法 |
|---|---|---|
| `NullPointerException` 在存取 XMP 時 | 檔案未包含 XMP 包 | 呼叫 `metadata.getXmpPackage()`,在讀取前先檢查是否為 `null`。`getXmpPackage()` 方法會回傳 XMP 包物件,若不存在則回傳 null。 |
| 500 MB 影像處理緩慢 | 將整個檔案載入記憶體 | 使用 `metadata.load(InputStream)`,並啟用 `metadata.setLoadOptions(LoadOptions.LAZY)`。 |
| 缺少 Photoshop 欄位 | 影像未包含 Photoshop 圖層資訊 | 確認來源檔案是以啟用「Save XMP」的方式從 Photoshop 匯出。 |
## 常見問答
**Q: 我可以從 PDF 檔案提取 XMP 嗎?**
A: 可以,GroupDocs.Metadata 透過相同的 `Metadata` API 支援 PDF 的 XMP 包。
**Q: 若檔案格式不受支援會發生什麼?**
A: 函式庫會拋出 `UnsupportedFormatException`;請捕捉此例外並回退至通用處理程序。
**Q: 是否可以修改 XMP 元資料並儲存回檔案?**
A: 完全可以。變更屬性後,呼叫 `metadata.save("output.png")` 以持久化更新。
**Q: 此函式庫能在 Android 上使用嗎?**
A: 核心 Java 函式庫相容於 Android API 24 以上,但必須加入 `android` 專屬的套件。
**Q: 如何處理加密的影像?**
A: 在 `Metadata` 建構子中提供解密密碼,例如 `new Metadata(filePath, "password")`。
## 結論
您現在擁有一份完整、可投入生產的 **提取 XMP** 元資料指南,使用 GroupDocs.Metadata for Java。依循上述步驟,即可為您的應用程式加入可搜尋、符合標準的元資料,並開啟強大的資產管理功能。
## 後續步驟
深入了解完整功能集,請參閱官方文件,並嘗試其他元資料標準,如 IPTC 與 EXIF。
[documentation](https://docs.groupdocs.com/metadata/java/)
---
**最後更新:** 2026-08-20
**測試環境:** GroupDocs.Metadata for Java 23.11
**作者:** GroupDocs
- [文件說明](https://docs.groupdocs.com/metadata/java/)
- [API 參考文件](https://reference.groupdocs.com/metadata/java/)
- [下載](https://releases.groupdocs.com/metadata/java/)
- [GitHub 倉庫](https://github.com/groupdocs-metadata/GroupDocs.Metadata-for-Java)
- [免費支援論壇](https://forum.groupdocs.com/c/metadata/)
- [臨時授權](https://purchase.groupdocs.com/temporary-license/)
## 相關教學
- [提取 Dublin Core 元資料 (Epub) Groupdocs Java](/metadata/java/metadata-standards/extract-dublin-core-metadata-epub-groupdocs-java/)
- [在 Java 中提取 EXIF 軟體標籤:使用 GroupDocs.Metadata 的完整指南](/metadata/java/metadata-standards/master-exif-data-java-groupdocs-metadata/)
- [如何使用 GroupDocs.Metadata for Java 提取元資料 – 教學與範例](/metadata/java/)