Thêm đồ họa vector vào các tệp PDF là một yêu cầu phổ biến cho việc tạo báo cáo, hoá đơn và tài liệu tương tác. Conholdate.Total for Java là một SDK mạnh mẽ giúp đơn giản hoá việc thao tác PDF trên máy chủ. Trong hướng dẫn này, bạn sẽ học cách chèn hình chữ nhật, hình elip và đường thẳng vào PDF, cấu hình giao diện của chúng và xử lý các cân nhắc về hiệu năng, tất cả đều kèm theo các ví dụ mã Java rõ ràng.
Các bước thêm hình dạng vào PDF trong Java
- Thêm Maven Repository và Dependency - Bao gồm Conholdate Maven repository và dependency
conholdate-totaltrong filepom.xmlcủa bạn. Điều này sẽ làm cho các lớp SDK nhưPdfDocumentvàShapeFactorycó sẵn.<repositories> <repository> <id>conholdate-repo</id> <name>Conholdate Maven Repository</name> <url>https://repository.conholdate.com/repo/</url> </repository> </repositories>
Tải tài liệu PDF - Tạo một thể hiện của
PdfDocumentvà mở tệp PDF mục tiêu. Lớp này được tài liệu hoá trong Tham chiếu API.PdfDocument pdf = new PdfDocument(); pdf.open("input.pdf");Tạo Đối Tượng Hình - Sử dụng
ShapeFactoryđể tạo các hình chữ nhật, hình elip hoặc đường thẳng. Đặt vị trí, kích thước và các thuộc tính hiển thị.
// Rectangle
Shape rect = ShapeFactory.createRectangle(100, 150, 200, 100);
rect.setFillColor(Color.BLUE);
rect.setStrokeColor(Color.BLACK);
rect.setLineWidth(2);
// Ellipse Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100); ellipse.setFillColor(Color.GREEN); ellipse.setStrokeColor(Color.DARK_GRAY); ellipse.setLineWidth(1.5f);
// Line
Shape line = ShapeFactory.createLine(100, 300, 500, 300);
line.setStrokeColor(Color.RED);
line.setLineWidth(3);
- Thêm Hình Dạng vào Trang - Lấy trang mong muốn từ tài liệu và thêm mỗi hình dạng vào bộ sưu tập đồ họa của nó.
Page page = pdf.getPages().get_Item(0); // first page
page.getGraphics().addShape(rect);
page.getGraphics().addShape(ellipse);
page.getGraphics().addShape(line);
- Save the Updated PDF - Sau khi tất cả các hình dạng đã được thêm, lưu tài liệu vào một tệp mới.
pdf.save("output.pdf"); pdf.close();
Thêm các hình dạng vào PDF trong Java - Ví dụ mã hoàn chỉnh
Ví dụ sau kết hợp tất cả các bước lại thành một chương trình duy nhất, sẵn sàng để chạy.
import com.conholdate.total.pdf.*;
import com.conholdate.total.pdf.shapes.*;
import java.awt.Color;
public class AddShapesDemo { public static void main(String[] args) throws Exception { // Initialize PDF document PdfDocument pdf = new PdfDocument(); pdf.open(“input.pdf”);
// Create rectangle Shape rectangle = ShapeFactory.createRectangle(100, 150, 200, 100); rectangle.setFillColor(Color.BLUE); rectangle.setStrokeColor(Color.BLACK); rectangle.setLineWidth(2);
// Tạo ellipse Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100); ellipse.setFillColor(Color.GREEN); ellipse.setStrokeColor(Color.DARK_GRAY); ellipse.setLineWidth(1.5f);
// Create line
Shape line = ShapeFactory.createLine(100, 300, 500, 300);
line.setStrokeColor(Color.RED);
line.setLineWidth(3);
// Thêm các hình dạng vào trang đầu tiên Page page = pdf.getPages().get_Item(0); page.getGraphics().addShape(rectangle); page.getGraphics().addShape(ellipse); page.getGraphics().addShape(line);
// Save the result pdf.save(“output.pdf”); pdf.close(); } }
<!--[COMPLETE_CODE_SNIPPET_END]-->
> **Lưu ý:** Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật các đường dẫn tệp (`input.pdf`, `output.pdf`) để phù hợp với vị trí thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo [tài liệu chính thức](https://docs.conholdate.com/java/) hoặc liên hệ với [đội hỗ trợ](https://forum.conholdate.com/c/total/5) để được trợ giúp.
## Cài đặt và Thiết lập trong Java
Để bắt đầu sử dụng Conholdate.Total for Java, tải xuống bản phát hành mới nhất từ trang chính thức và thêm phụ thuộc Maven đã được hiển thị ở trên. SDK hoạt động trên bất kỳ môi trường chạy Java 8+ nào và không yêu cầu thư viện gốc bổ sung.
- **URL tải xuống:** [Conholdate.Total for Java Release](https://releases.conholdate.com/total/java/)
- **Tài liệu:** Hướng dẫn sử dụng chi tiết có sẵn trong [tài liệu chính thức](https://docs.conholdate.com/java/).
- **Giấy phép:** Nhận giấy phép tạm thời từ [trang giấy phép tạm thời](https://purchase.conholdate.com/temporary-license/) hoặc xem giá đầy đủ trên [trang giá](https://purchase.conholdate.com/pricing/total/family/).
## Các tính năng chính và tổng quan
### Thêm hình dạng vào PDF trong Java với Conholdate.Total
Conholdate.Total for Java cung cấp một API thống nhất để tạo và chỉnh sửa nội dung PDF. Chức năng vẽ hình hoạt động với đồ họa vector, đảm bảo các phần tử được thêm vào luôn sắc nét ở bất kỳ mức thu phóng nào. Bạn có thể vẽ các primitive cơ bản (hình chữ nhật, hình elip, đường thẳng) cũng như các đường dẫn phức tạp.
### Các tính năng của Conholdate.Total quan trọng cho nhiệm vụ này
- **Khả năng tương thích đa nền tảng:** Hoạt động trên máy chủ Windows, Linux và macOS.
- **Kết xuất hiệu suất cao:** Các hình dạng được kết xuất bằng cùng một engine tạo nội dung PDF gốc, tránh rasterization.
- **Kiểm soát đầy đủ về giao diện:** Đặt màu nền, màu viền, độ rộng đường, độ trong suốt và chế độ [blend](https://docs.fileformat.com/3d/blend/).
- **Đồ họa lớp:** Thêm các hình dạng vào các lớp hoặc nhóm cụ thể để dễ dàng thao tác sau này.
## Cấu hình Thuộc tính Hình dạng để Kết xuất Tối ưu
Khi thêm các hình dạng, hãy xem xét các thuộc tính sau để đạt được kết quả hình ảnh mong muốn:
- **Position and Size:** Sử dụng tọa độ tuyệt đối (points) hoặc phần trăm tương đối với kích thước trang.
- **Colors:** SDK chấp nhận các đối tượng `java.awt.Color`. Để tạo độ trong suốt, sử dụng `new Color(r, g, b, alpha)`.
- **Line Width:** Được đo bằng points; giá trị `1` tương đương 1/72 inch.
- **Opacity and Blend Mode:** Điều chỉnh bằng `setOpacity(float)` và `setBlendMode(BlendMode)`.
- **Rotation and Skew:** Áp dụng các phép biến đổi qua `setRotation(double)` hoặc `setSkew(double, double)` cho các bố cục nâng cao.
Ví dụ về việc thiết lập các thuộc tính nâng cao:
<!--[CODE_SNIPPET_START]-->
```java
ellipse.setOpacity(0.7f);
ellipse.setBlendMode(BlendMode.MULTIPLY);
ellipse.setRotation(45);
Các yếu tố cần cân nhắc về hiệu suất khi thêm hình dạng vào PDF
Việc thêm nhiều đối tượng vector có thể làm tăng thời gian xử lý và mức sử dụng bộ nhớ. Hãy tuân theo các hướng dẫn sau:
- Batch Drawing: Nhóm các hình dạng liên quan vào một container đồ họa duy nhất trước khi thêm chúng vào trang.
- Reuse Objects: Nếu bạn cần các hình dạng giống hệt trên nhiều trang, hãy sao chép một hình dạng hiện có thay vì tạo các thể hiện mới.
- Avoid Over‑Scaling: Định nghĩa các hình dạng ở kích thước hiển thị cuối cùng để tránh việc chuyển đổi raster tốn kém.
- Dispose Resources: Đóng
PdfDocumentngay lập tức để giải phóng tài nguyên gốc.
Kết luận
Conholdate.Total for Java cung cấp cho các nhà phát triển Java một cách đơn giản để thêm các hình dạng vào tài liệu PDF, cho phép tạo ra các báo cáo và hoá đơn phong phú, tương tác. Bằng cách làm theo các bước, mẹo cấu hình và hướng dẫn hiệu năng trong hướng dẫn này, bạn có thể tích hợp đồ họa vector vào quy trình làm việc PDF của mình một cách tự tin. Hãy nhớ đảm bảo có giấy phép phù hợp cho việc sử dụng trong môi trường sản xuất; một giấy phép tạm thời có sẵn để đánh giá, và chi tiết giá đầy đủ được liệt kê trên trang giá.
Câu hỏi thường gặp
Làm thế nào để tôi thêm phông chữ tùy chỉnh vào các hình dạng trong PDF?
Bạn có thể nhúng phông chữ TrueType bằng cách sử dụng pdf.getFonts().addFont("MyFont.ttf") và sau đó gán nó cho một hình dạng qua setFont(myFont). SDK đảm bảo phông chữ được nhúng trong PDF cuối cùng.
Có thể chèn các hình dạng vào một tệp PDF hiện có mà không làm mất nội dung hiện có không?
Có. Mở PDF bằng PdfDocument.open() sẽ giữ lại tất cả các trang và đối tượng hiện có. Thêm các hình dạng vào bộ sưu tập đồ họa của trang chỉ làm tăng thêm nội dung cho trang; nó không ghi đè lên nội dung hiện có.
Bạn có thể xuất sang định dạng tệp nào sau khi thêm hình dạng?
Conholdate.Total for Java hỗ trợ lưu dưới dạng PDF, PDF/A, PDF/X, và cũng hỗ trợ các định dạng hình ảnh như PNG, JPEG, và BMP. Sử dụng pdf.save("output.pdf") hoặc pdf.save("output.png", ImageSaveOptions.Png) khi cần.
