<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>java pdf shapes on Conholdate Blog</title>
    <link>https://blog-qa.conholdate.com/vi/tag/java-pdf-shapes/</link>
    <description>Recent content in java pdf shapes on Conholdate Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>vi</language>
    <lastBuildDate>Fri, 05 Jun 2026 18:38:01 +0000</lastBuildDate><atom:link href="https://blog-qa.conholdate.com/vi/tag/java-pdf-shapes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Thêm Hình dạng vào PDF trong Java</title>
      <link>https://blog-qa.conholdate.com/vi/total/add-shapes-to-pdf-in-java/</link>
      <pubDate>Fri, 05 Jun 2026 18:38:01 +0000</pubDate>
      
      <guid>https://blog-qa.conholdate.com/vi/total/add-shapes-to-pdf-in-java/</guid>
      <description>Tìm hiểu cách thêm các hình dạng vào PDF trong Java bằng Conholdate.Total for Java. Hãy làm theo hướng dẫn từng bước này với mã nguồn, cài đặt và các thực tiễn tốt nhất cho đồ họa vector.</description>
      <content:encoded><![CDATA[<p>Thêm đồ họa vector vào các tệp <a href="https://docs.fileformat.com/pdf">PDF</a> 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. <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> 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.</p>
<h2 id="các-bước-thêm-hình-dạng-vào-pdf-trong-java">Các bước thêm hình dạng vào PDF trong Java</h2>
<ol>
<li><strong>Thêm Maven Repository và Dependency</strong> - Bao gồm Conholdate Maven repository và dependency <code>conholdate-total</code> trong file <code>pom.xml</code> của bạn. Điều này sẽ làm cho các lớp SDK như <code>PdfDocument</code> và <code>ShapeFactory</code> có sẵn.
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;repositories&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;repository&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;id&gt;</span>conholdate-repo<span style="color:#f92672">&lt;/id&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;name&gt;</span>Conholdate Maven Repository<span style="color:#f92672">&lt;/name&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;url&gt;</span>https://repository.conholdate.com/repo/<span style="color:#f92672">&lt;/url&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/repository&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/repositories&gt;</span>
</span></span></code></pre></div></li>
</ol>
<!-- raw HTML omitted -->
<ol start="2">
<li>
<p><strong>Tải tài liệu PDF</strong> - Tạo một thể hiện của <code>PdfDocument</code> và mở tệp PDF mục tiêu. Lớp này được tài liệu hoá trong <a href="https://reference.conholdate.com/java/">Tham chiếu API</a>.</p>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>PdfDocument pdf <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> PdfDocument<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">open</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;input.pdf&#34;</span><span style="color:#f92672">);</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Tạo Đối Tượng Hình</strong> - Sử dụng <code>ShapeFactory</code> để 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ị.</p>
</li>
</ol>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#75715e">// Rectangle
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>Shape rect <span style="color:#f92672">=</span> ShapeFactory<span style="color:#f92672">.</span><span style="color:#a6e22e">createRectangle</span><span style="color:#f92672">(</span>100<span style="color:#f92672">,</span> 150<span style="color:#f92672">,</span> 200<span style="color:#f92672">,</span> 100<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>rect<span style="color:#f92672">.</span><span style="color:#a6e22e">setFillColor</span><span style="color:#f92672">(</span>Color<span style="color:#f92672">.</span><span style="color:#a6e22e">BLUE</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>rect<span style="color:#f92672">.</span><span style="color:#a6e22e">setStrokeColor</span><span style="color:#f92672">(</span>Color<span style="color:#f92672">.</span><span style="color:#a6e22e">BLACK</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>rect<span style="color:#f92672">.</span><span style="color:#a6e22e">setLineWidth</span><span style="color:#f92672">(</span>2<span style="color:#f92672">);</span>
</span></span></code></pre></div><p>// Ellipse
Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100);
ellipse.setFillColor(Color.GREEN);
ellipse.setStrokeColor(Color.DARK_GRAY);
ellipse.setLineWidth(1.5f);</p>
<pre tabindex="0"><code>// Line
   Shape line = ShapeFactory.createLine(100, 300, 500, 300);
   line.setStrokeColor(Color.RED);
   line.setLineWidth(3);
</code></pre><ol start="4">
<li><strong>Thêm Hình Dạng vào Trang</strong> - 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ó.</li>
</ol>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>Page page <span style="color:#f92672">=</span> pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">getPages</span><span style="color:#f92672">().</span><span style="color:#a6e22e">get_Item</span><span style="color:#f92672">(</span>0<span style="color:#f92672">);</span> <span style="color:#75715e">// first page
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>page<span style="color:#f92672">.</span><span style="color:#a6e22e">getGraphics</span><span style="color:#f92672">().</span><span style="color:#a6e22e">addShape</span><span style="color:#f92672">(</span>rect<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>page<span style="color:#f92672">.</span><span style="color:#a6e22e">getGraphics</span><span style="color:#f92672">().</span><span style="color:#a6e22e">addShape</span><span style="color:#f92672">(</span>ellipse<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>page<span style="color:#f92672">.</span><span style="color:#a6e22e">getGraphics</span><span style="color:#f92672">().</span><span style="color:#a6e22e">addShape</span><span style="color:#f92672">(</span>line<span style="color:#f92672">);</span>
</span></span></code></pre></div><ol start="5">
<li><strong>Save the Updated PDF</strong> - 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.
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">save</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;output.pdf&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">close</span><span style="color:#f92672">();</span>
</span></span></code></pre></div></li>
</ol>
<h2 id="thêm-các-hình-dạng-vào-pdf-trong-java---ví-dụ-mã-hoàn-chỉnh">Thêm các hình dạng vào PDF trong Java - Ví dụ mã hoàn chỉnh</h2>
<p>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.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#f92672">import</span> com.conholdate.total.pdf.*<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.conholdate.total.pdf.shapes.*<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.awt.Color<span style="color:#f92672">;</span>
</span></span></code></pre></div><p>public class AddShapesDemo {
public static void main(String[] args) throws Exception {
// Initialize PDF document
PdfDocument pdf = new PdfDocument();
pdf.open(&ldquo;input.pdf&rdquo;);</p>
<p>// Create rectangle
Shape rectangle = ShapeFactory.createRectangle(100, 150, 200, 100);
rectangle.setFillColor(Color.BLUE);
rectangle.setStrokeColor(Color.BLACK);
rectangle.setLineWidth(2);</p>
<p>// Tạo ellipse
Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100);
ellipse.setFillColor(Color.GREEN);
ellipse.setStrokeColor(Color.DARK_GRAY);
ellipse.setLineWidth(1.5f);</p>
<pre tabindex="0"><code>// Create line
        Shape line = ShapeFactory.createLine(100, 300, 500, 300);
        line.setStrokeColor(Color.RED);
        line.setLineWidth(3);
</code></pre><p>// 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);</p>
<p>// Save the result
pdf.save(&ldquo;output.pdf&rdquo;);
pdf.close();
}
}</p>
<pre tabindex="0"><code>&lt;!--[COMPLETE_CODE_SNIPPET_END]--&gt;

&gt; **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:

&lt;!--[CODE_SNIPPET_START]--&gt;
```java
ellipse.setOpacity(0.7f);
ellipse.setBlendMode(BlendMode.MULTIPLY);
ellipse.setRotation(45);
</code></pre><!-- raw HTML omitted -->
<h2 id="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">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</h2>
<p>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:</p>
<ul>
<li><strong>Batch Drawing:</strong> 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.</li>
<li><strong>Reuse Objects:</strong> 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.</li>
<li><strong>Avoid Over‑Scaling:</strong> Đị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.</li>
<li><strong>Dispose Resources:</strong> Đóng <code>PdfDocument</code> ngay lập tức để giải phóng tài nguyên gốc.</li>
</ul>
<h2 id="kết-luận">Kết luận</h2>
<p><a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> 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 <a href="https://purchase.conholdate.com/pricing/total/family/">trang giá</a>.</p>
<h2 id="câu-hỏi-thường-gặp">Câu hỏi thường gặp</h2>
<p><strong>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?</strong><br>
Bạn có thể nhúng phông chữ TrueType bằng cách sử dụng <code>pdf.getFonts().addFont(&quot;MyFont.ttf&quot;)</code> và sau đó gán nó cho một hình dạng qua <code>setFont(myFont)</code>. SDK đảm bảo phông chữ được nhúng trong PDF cuối cùng.</p>
<p><strong>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?</strong><br>
Có. Mở PDF bằng <code>PdfDocument.open()</code> 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ó.</p>
<p><strong>Bạn có thể xuất sang định dạng tệp nào sau khi thêm hình dạng?</strong><br>
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ư <a href="https://docs.fileformat.com/image/png/">PNG</a>, <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a>, và BMP. Sử dụng <code>pdf.save(&quot;output.pdf&quot;)</code> hoặc <code>pdf.save(&quot;output.png&quot;, ImageSaveOptions.Png)</code> khi cần.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
