| categories |
|
||||
|---|---|---|---|---|---|
| date | 2026-02-03 | ||||
| description | 學習如何使用 GroupDocs Annotation Library for Java 為 PDF 檔案添加註釋。逐步指南、程式碼範例、故障排除技巧與最佳實踐。 | ||||
| keywords | add annotations to PDF Java, Java PDF annotation library, programmatic PDF annotation Java, GroupDocs annotation tutorial, PDF markup Java | ||||
| lastmod | 2026-02-03 | ||||
| linktitle | Add PDF Annotations in Java | ||||
| tags |
|
||||
| title | GroupDocs 註解庫 Java:新增 PDF 註解 | ||||
| type | docs | ||||
| url | /zh-hant/java/graphical-annotations/java-ellipse-annotations-pdf-groupdocs/ | ||||
| weight | 1 |
有沒有想過如何在 Java 中以程式方式為 PDF 文件加入註解?使用 groupdocs annotation library java,您可以直接在 PDF 中嵌入橢或門。
- 什麼程式庫可在 Java 中為 PDF 加入註解? groupdocs購個VS Code)皆可。
- 我可以為受密碼保護的 PDF 加註解嗎? 可以——在建立
Annotator時提供密碼。 - 支援批次處理嗎? 當然;請參閱下方批次處理範例。
groupdocs annotation library java 是一套功能強大、企業級的 Java API,讓您能以程式方式建立、編輯與取得 PDF 註解。它支援超過 50 種文件格式,並提供回覆與評論串等協作功能。
- 豐富的註解類型 – 形狀、文字、印章、水印等。
- 協作就緒 – 內建回覆與評論串。
- 效能優化 – 能有效處理大型 PDF。
- 簡易 API – 相較於 iText 或 PDFBox 等底層函式庫,可短開發時間。
- JDK 8+(建議使用 JDK 11)
- Maven 或 Gradle 用於相依管理
- IDE(自行選擇,如 IntelliJ IDEA、E 設定 GroupDocs Annotation Library Java
在 pom.xml 中加入倉庫與相依:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/annotation/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-annotation</artifactId>
<version>25.2</version>
</dependency>
</dependencies>在執行任何註解操作前先套用授權:
License license = new License();
license.setLicense("path/to/your/license/file");小技巧: 將授權檔案放在 src/main/resources,並使用 getClass().getResourceAsStream() 載入,以便更順利部署。
final Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input_document.pdf");Reply reply1 = new Reply();
reply1.setComment("First comment");
reply1.setRepliedOn(Calendar.getInstance().getTime());
Reply reply2 = new Reply();
reply2.setComment("Second comment");
reply2.setRepliedOn(Calendar.getInstance().getTime());
List<Reply> replies = new ArrayList<>();
replies.add(reply1);
replies.add(reply2);EllipseAnnotation ellipse = new EllipseAnnotation();
ellipse.setBackgroundColor(65535); // Yellow background color
ellipse.setBox(new Rectangle(100, 100, 100, 100)); // Position and size
ellipse.setMessage("This is an ellipse annotation");
ellipse.setOpacity(0.7);
ellipse.setPageNumber(0); // First page (0‑indexed)
ellipse.setPenColor(65535); // Pen color in RGB
ellipse.setPenStyle(PenStyle.DOT); // Dotted line style
ellipse.setPenWidth((byte) 3); // Line thickness
ellipse.setReplies(replies);annotator.add(ellipse);
annotator.save("YOUR_OUTPUT_DIRECTORY/annotated_document.pdf");
annotator.dispose();為何要呼叫
dispose()? 它會釋放原生資源,防止記憶體泄漏——在迴圈處理大量 PDF 時尤為重要。
原因: 檔案路徑或工作目錄不正確。
解決方法: 檢查絕對路徑,或列印 System.getProperty("user.dir") 以確認基礎目錄。
原因: 坐標系統或頁碼錯誤。
解決方法: 記得 PDF 坐標從左下角開始,且頁碼從 0 起算。
原因: 整份文件一次載入記憶體。
解決方法: 增加 JVM 堆積大小(`-X### 問題 4 – 授權驗證錯誤
原因: 授權檔案遺失或版本不符。
解決方法: 再次確認檔案路徑,並確保授權版本與函式庫版本相符。
// Process multiple documents efficiently
for (String documentPath : documentPaths) {
try (Annotator annotator = new Annotator(documentPath)) {
// Add annotations
// Save document
} // Automatic resource cleanup
}- 小型 PDF(<10 MB): 單獨處理。
- 中型 PDF(10‑50 MB): 以 5‑10 個為一批處理。
- 大型 PDF(>50 MB): 使用串流或分塊處理以避免 OOM。
// Reusable annotation template
private static EllipseAnnotation createStandardEllipse() {
EllipseAnnotation template = new EllipseAnnotation();
// Set common properties once
return template;
}@RestController
@RequestMapping("/api/documents")
public class DocumentAnnotationController {
@PostMapping("/{id}/annotate")
public ResponseEntity<String> addAnnotation(
@PathVariable String id,
@RequestBody AnnotationRequest request) {
// Annotation logic here
// Return success/failure response
}
}public class BatchAnnotationProcessor {
public void processBatch(List<DocumentAnnotationTask> tasks) {
tasks.parallelStream()
.forEach(this::processDocument);
}
private void processDocument(DocumentAnnotationTask task) {
// Individual document processing logic
}
}// Position based on a text search result
Rectangle dynamicPosition = findTextPosition("important keyword");
ellipse.setBox(dynamicPosition);// Different colors for warning vs. info annotations
int color = annotationType.equals("warning") ? 16711680 : 65535; // Red : Yellow
ellipse.setBackgroundColor(color);- 教育平台: 標示概念、加入教師評論、製作互動式學習指南。
- 法律文件審閱: 標註條款、加入機密備註、保留稽核紀錄。
- **醫療紀錄:**協作。
- 企業工作流程: 簡化報告審批、加入審核印章、追蹤變更。
雖圓註解,groupdocs annotation library java 亦提供以下類型:
- **文字。
- 矩形註解:用於區域標示。
-**:用於批准。
當需要非矩形、視覺上突出的標示時,請選擇橢圓——非常適合強調圓形圖示或標誌區域。
- 症狀: 處理緩慢。
- 診斷: 檔案過大、註解過多、記憶體不足。
- 解決方案: 最佳化註解屬性、非同步處理,或將大型 PDF 分頁處理。
- 症狀: 不同檢視器的註解呈現不同。
- 診斷: 非標準 PDF 功能。
- 解決方案: 使用 Adobe Acrobat、Chrome 與 Firefox 測試;遵循 PDF 標準註解旗標。
- 症狀: 相依衝突。
- 診斷: 與其他函式庫版本不符。
- 解決方案: 使用 Maven 的
<dependencyManagement>以強制相容版本,或改用 REST API 進行語言無關的整合。
Q: 我可以為受密碼保護的 PDF 加註解嗎?
A: 可以。使用 new Annotator(filePath, loadOptions) 的重載,並在 loadOptions 中提供密碼。
Q: 我該如何處理大於 100 MB 的 PDF?
A: 可逐頁處理、增加堆積大小,或使用 GroupDocs Annotation Cloud API 以應付大量工作負載。
Q: 每份文件的註解數量有限制嗎?
A: 沒有硬性上限,但數千 我可以擷取既有的 當然可以。呼叫 我該式庫提供基於使用者的權限設定,可透過AnnotationPermission` API 進行配置。
groupdocs annotation library java 為您提供一種簡潔且高效的方式,直接從 Java 程式碼嵌入豐富的 PDF 註解。依照上述步驟,即可新增橢圓註解、.水印)。
2支援03 GroupDocs.Annotation 25.2 for Java
作者: GroupDocs
重要連結:
- 文件說明: GroupDocs Annotation Java 文件說明
- API 參考: GroupDocs API 參考
- 下載: 下載 GroupDocs.Annotation
- 購買: 購買 GroupDocs 授權
- 免費試用: 開始免費試用
- 臨時授權: 申請臨時授權
- 支援: GroupDocs 支援論壇