Blog này là phần tiếp theo của blog trước, trong đó chúng tôi đã nêu bật một số tính năng thú vị của Aspose.PDF Cloud SDK dành cho Java về cách thêm Đánh dấu hoặc gạch bỏ văn bản và thêm chú thích dòng hoặc vòng tròn vào PDF bằng Java REST API. Trong bài viết này, chúng tôi sẽ thảo luận cụ thể về cách thêm chú thích văn bản, đa tuyến, ngoằn ngoèo và tệp đính kèm vào tài liệu PDF bằng ngôn ngữ lập trình Java.
Aspose.PDF Cloud là một REST API cho phép người dùng tạo, thao tác và hiển thị các tệp PDF hiện có sang các [định dạng tài liệu được hỗ trợ] khác 3. Có thể truy cập Cloud API bằng hai cách sau:
- Truy cập API thông qua lệnh cURL
- Truy cập API bằng ngôn ngữ lập trình Java
Chúng ta hãy thảo luận thêm về việc thêm nhiều chú thích khác nhau vào tài liệu PDF bằng lệnh cURL và mã Java.
Thêm chú thích bằng lệnh cURL
Lệnh cURL là một trong những cách dễ nhất và thú vị nhất để truy cập API REST. Vì vậy, chúng ta hãy nói về việc thêm các chú thích khác nhau bằng lệnh cURL. Xin lưu ý rằng mỗi API cũng cho phép bạn truy cập vào bộ lưu trữ Cloud nơi các tệp có thể được lưu trữ để xử lý, vì vậy để đảm bảo tính toàn vẹn của dữ liệu, API của chúng tôi chỉ có thể truy cập được đối với những người được ủy quyền. Do đó, trước tiên bạn cần truy cập Bảng điều khiển Aspose.Cloud và nếu bạn có tài khoản GitHub hoặc Google, chỉ cần Đăng ký. Nếu không, hãy nhấp vào nút Tạo tài khoản mới và cung cấp thông tin bắt buộc. Bây giờ hãy đăng nhập vào bảng điều khiển bằng thông tin xác thực, mở rộng phần Ứng dụng từ bảng điều khiển và cuộn xuống phần Thông tin xác thực của khách hàng để xem thông tin chi tiết về ID khách hàng và Bí mật khách hàng.
Bây giờ, bước tiếp theo là tạo JSON Web Token (JWT) để API có thể truy cập được thông qua dấu nhắc lệnh.
curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=7042694c-5251-4aba-83c9-e81e7518724f&client_secret=db246d4742e8cd22e7266c9391992689" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"
Chú thích văn bản
Chú thích văn bản là chú thích được đính kèm vào một vị trí cụ thể trong tài liệu PDF. Khi đóng, chú thích được hiển thị dưới dạng biểu tượng; khi mở, nó sẽ hiển thị cửa sổ bật lên chứa văn bản ghi chú theo phông chữ và kích thước do người đọc chọn. Để thêm Chú thích văn bản, chúng ta cần sử dụng API PostPageTextAnnotation. Sử dụng lệnh cURL sau để thêm Chú thích văn bản có biểu tượng Ghi chú.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/text" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[{ \"Color\": { \"A\": 0, \"R\": 0xDA, \"G\": 0xA5, \"B\": 0x20 }, \"Contents\": \"Hello World \", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"string\", \"Rect\": { \"LLX\": 100, \"LLY\": 800, \"URX\": 100, \"URY\": 100 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"string\", \"Subject\": \"Subject of Annotation\", \"Title\": \"Annotation Title\", \"RichText\": \"string\", \"State\": \"Undefined\", \"Open\": true, \"Icon\": \"Note\" }]"
Các tệp PDF mẫu được sử dụng trong ví dụ trên có thể được tải xuống từ các liên kết sau
Chú thích đa tuyến
Chú thích Polyline được sử dụng để vẽ tay các polyline trên một trang. Chúng có thể chứa bất kỳ số lượng cạnh nào được xác định bởi các đỉnh polyline. Chú thích Polyline có màu tô trong suốt chỉ có thể chọn xung quanh các đường nhìn thấy được của chúng. Chú thích Polyline cũng có thể được thêm bằng cách sử dụng PostPagePolyLineAnnotations API.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/polyline" \
-H "accept: application/json" \
-H "authorization: Bearer " \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 0, \"R\": 122, \"G\": 132, \"B\": 255 }, \"Contents\": \"Hello World...\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"Polyline\", \"Rect\": { \"LLX\": 100, \"LLY\": 200, \"URX\": 150, \"URY\": 250 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject of Annotation\", \"Title\": \"Title of Annotation\", \"RichText\": \"<?xml version=\\\"1.0\\\"?><body xmlns=\\\"https://www.w3.org/1999/xhtml/\\\" xmlns:xfa=\\\"https://www.xfa.org/schema/xfa-data/1.0/\\\" xfa:APIVersion=\\\"Acrobat:7.0.0\\\" xfa:spec=\\\"2.0.2\\\" ><span style=\\\"text-decoration:;font-size:10.0pt\\\">Contents</span></body>\", \"InteriorColor\": { \"A\": 255, \"R\": 120, \"G\": 110, \"B\": 255 }, \"StartingStyle\": \"Circle\", \"EndingStyle\": \"OpenArrow\", \"Intent\": \"PolyLineDimension\", \"Vertices\": [ { \"X\": 164.611, \"Y\": 499.629 }, { \"X\": 192.858, \"Y\": 509.857 }, { \"X\": 226.461, \"Y\": 493.785 } ] }]"
Chú thích ngoằn ngoèo
Chú thích ngoằn ngoèo hoặc có đường gạch chân răng cưa giúp làm nổi bật thông tin trong tài liệu. Chúng có thể được thêm vào bằng API PostPageSquigglyAnnotations. Lệnh được đưa ra bên dưới giúp bạn thêm chú thích Squiggly vào tài liệu PDF.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/squiggly" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 255, \"R\": 120, \"G\": 123, \"B\": 150 }, \"Contents\": \"A squiggly Annotation\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"First Annotation\", \"Rect\": { \"LLX\": 100, \"LLY\": 300, \"URX\": 120, \"URY\": 330 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject \", \"Title\": \"Title of Squiggly\", \"Starting\": { \"X\": 162.663, \"Y\": 654.5 }, \"StartingStyle\": \"Circle\", \"Ending\": { \"X\": 230.845, \"Y\": 654.5 }, \"EndingStyle\": \"OpenArrow\", \"InteriorColor\": { \"A\": 255, \"R\": 220, \"G\": 220, \"B\": 220 }, \"LeaderLine\": 10, \"LeaderLineExtension\": 5, \"LeaderLineOffset\": 2.5, \"ShowCaption\": true, \"CaptionOffset\": { \"X\": 7, \"Y\": 8 }, \"CaptionPosition\": \"Top\", \"Intent\": \"LineArrow\",\"RichText\": \"string\", \"QuadPoints\": [ { \"X\": 100, \"Y\": 200 } ] }]"
Chú thích đính kèm
Có thể thêm nhiều tệp khác nhau làm chú thích Đính kèm vào tài liệu PDF và để thực hiện yêu cầu này, có thể sử dụng API PostPageFileAttachmentAnnotations. Thực hiện lệnh cURL sau để đính kèm tệp hiện có vào tài liệu PDF. Trong ví dụ của chúng tôi, tệp có tên PdfWithTable.pdf (đã có trên lưu trữ đám mây) được sử dụng làm tệp đính kèm.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/fileattachment" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 255, \"R\": 120, \"G\": 120, \"B\": 120 }, \"Contents\": \"Content\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"FileAttachment\", \"Rect\": { \"LLX\": 100, \"LLY\": 200, \"URX\": 120, \"URY\": 2200 }, \"PageIndex\": 1, \"ZIndex\": 0, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Top\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject\", \"Title\": \"Title\", \"RichText\": \"string\", \"Icon\": \"PushPin\", \"Opacity\": 0, \"FileDescription\": \"string\", \"FileName\": \"PdfWithTable.pdf\", \"FilePath\": \"PdfWithTable.pdf\" }]"
Thêm chú thích bằng Java
Ngoài các lệnh cURL, một cách tiếp cận khác để sử dụng Cloud API của chúng tôi là truy cập chúng thông qua SDK lập trình. Chúng tôi đã phát triển SDK lập trình cho các ngôn ngữ lập trình phổ biến. Vì vậy, để làm việc với Chú thích trong PDF bằng ngôn ngữ Java, vui lòng thử sử dụng Aspose.PDF Cloud SDK cho Java.
Bước đầu tiên là cài đặt SKD trên hệ thống. Cloud SDK có sẵn để tải xuống qua Maven và GitHub. Bây giờ hãy thêm các chi tiết sau vào tệp pom.xml của bạn để tải xuống và sử dụng Aspose.Pdf.jar trong dự án xây dựng Maven của bạn.
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf-cloud</artifactId>
<version>21.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Để biết thêm thông tin, vui lòng truy cập Cách cài đặt Aspose.Cloud SDK.
Chú thích văn bản
Dưới đây là các bước để thêm chú thích văn bản vào tài liệu PDF.
- Bước đầu tiên là tạo một đối tượng PdfApi trong đó chúng ta cung cấp ClientID và ClientSecret làm đối số
- Sau đó chúng ta tạo đối tượng Rectangle nơi chú thích được thêm vào
- LLX - Tọa độ X của góc dưới bên trái.
- LLY - Y - tọa độ của góc dưới bên trái.
- URY - X - tọa độ của góc trên bên phải.
- URY - Y - tọa độ của góc trên bên phải.
- Tạo đối tượng TextAnnotation trong đó chúng ta định nghĩa căn chỉnh bằng phương thức setHorizontalAlignment(..).Đặt chủ thể bằng phương thức setSubject(…), trạng thái mặc định bằng phương thức setState(…) v.v.
- Sau đó tạo đối tượng ArrayList<> kiểu TextAnnotation và thêm đối tượng TextAnnotation đã tạo ở trên vào đó
- Cuối cùng, gọi postPageTextAnnotations(…) trong đó chúng ta truyền tên tệp PDF đầu vào, PageNumber và Annotations ArrayList được tạo ở trên làm đối số
// Nhận ClientID và ClientSecret từ https://dashboard.aspose.cloud/
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
// thể hiện createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// nhập tài liệu PDF
String name = "PdfWithTable.pdf";
// Tải tập tin từ hệ thống cục bộ
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// tải tập tin lên bộ nhớ đám mây
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// số trang cần thêm chú thích
int pageNumber = 1;
// tạo đối tượng Rectangle nơi chú thích được thêm vào
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// Tạo ListArray của AnnotationFlags
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// Tạo đối tượng TextAnnotation
TextAnnotation textAnnotation = new TextAnnotation();
textAnnotation.setName("Annotation Name");
textAnnotation.setRect(rect);
textAnnotation.setFlags(flags);
textAnnotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
// thiết lập nội dung được hiển thị bên trong Chú thích
textAnnotation.contents("Hello World...");
// Đặt biểu tượng cho chú thích
textAnnotation.icon(TextIcon.KEY);
textAnnotation.setSubject("Text Box Subj");
textAnnotation.setZindex(1);
// trạng thái mặc định của Đối tượng chú thích
textAnnotation.setState(AnnotationState.COMPLETED);
// tạo ListArray của TextAnnotation
List<TextAnnotation> annotations = new ArrayList<>();
// thêm TextAnnotation đã tạo ở trên vào thể hiện List
annotations.add(textAnnotation);
// gọi phương thức để thêm chú thích vào tệp PDF
AsposeResponse response = pdfApi.postPageTextAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
Chú thích Polyline
Cloud SDK cũng cung cấp các khả năng tương tự để thêm Chú thích Polyline vào tài liệu PDF. Dưới đây là các bước và đoạn mã để đáp ứng yêu cầu này.
- Đầu tiên, chúng ta cần tạo một phiên bản PdfApi và tải tệp nguồn lên bộ nhớ đám mây.
- Tạo ArrayList kiểu Point để xác định các điểm mà các đường polyline sẽ được vẽ.
- Bước tiếp theo là tạo đối tượng PolyLineAnnotation trong đó chúng ta định nghĩa vùng hình chữ nhật và truyền Points ListArray cho phương thức setVertices(…).
- Để thiết lập màu bên trong, hãy sử dụng phương thức setInteriorColor(…) và truyền thể hiện Color làm đối số.
- Bây giờ hãy gọi các phương thức startingStyle(…) và endingStyle(…) để xác định kiểu bắt đầu và kết thúc của chú thích. Các phương thức này lấy giá trị từ phép liệt kê LineEnding làm đối số.
- Cuối cùng, gọi phương thức postPagePolyLineAnnotations(…) của lớp PdfApi để hiển thị Chú thích bên trong tài liệu PDF.
// Nhận ClientID và ClientSecret từ https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// thể hiện createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// nhập tài liệu PDF
String name = "PdfWithTable.pdf";
// Tải tập tin từ hệ thống cục bộ
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// tải tập tin lên bộ nhớ đám mây
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// số trang cho tệp đầu vào nơi chú thích sẽ được thêm vào
int pageNumber = 1;
// vùng hình chữ nhật cho chú thích
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// chỉ định các đỉnh cho chú thích
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// tạo đối tượng PolyLineAnnotation
PolyLineAnnotation annotation = new PolyLineAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
// thiết lập căn chỉnh theo chiều ngang của chú thích
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
// tạo đối tượng màu
Color color = new Color();
color.setA(255);
color.setR(120);
color.setG(140);
color.setB(130);
// thiết lập màu bên trong cho trường hợp chú thích
annotation.setInteriorColor(color);
annotation.setVertices(vertices);
// chỉ định kiểu bắt đầu cho chú thích
annotation.startingStyle(LineEnding.OPENARROW);
// thiết lập kiểu kết thúc cho chú thích
annotation.endingStyle(LineEnding.SQUARE);
List<PolyLineAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// gọi phương thức để thêm chú thích Polyline vào trang đầu tiên của tài liệu
AsposeResponse response = pdfApi.postPagePolyLineAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
Chú thích ngoằn ngoèo
Một lớp riêng biệt có tên SquigglyAnnotation được sử dụng để thêm chú thích Squiggly vào tài liệu PDF. Đoạn mã dưới đây có thể được sử dụng để thêm chú thích Squiggly vào tệp PDF có sẵn trên Cloud storage.
// Nhận ClientID và ClientSecret từ https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// thể hiện createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// nhập tài liệu PDF
String name = "PdfWithTable.pdf";
// Tải tập tin từ hệ thống cục bộ
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// tải tập tin lên bộ nhớ đám mây
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// số trang cho tệp đầu vào nơi chú thích sẽ được thêm vào
int pageNumber = 1;
// vùng hình chữ nhật cho chú thích
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// chỉ định các đỉnh cho chú thích
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// tạo đối tượng SquigglyAnnotation
SquigglyAnnotation annotation = new SquigglyAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
// tạo đối tượng màu
Color color = new Color();
color.setA(155);
color.setR(120);
color.setG(140);
color.setB(130);
// thiết lập màu bên trong cho trường hợp chú thích
annotation.color(color);
// thiết lập các điểm chú thích
annotation.setQuadPoints(vertices);
List<SquigglyAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// gọi phương thức để thêm chú thích Squiggly vào trang đầu tiên của tài liệu
AsposeResponse response = pdfApi.postPageSquigglyAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
Chú thích tệp đính kèm
Để thêm chú thích tệp đính kèm, vui lòng thử sử dụng đoạn mã sau. Mô tả mã giống như được chia sẻ trong các phần trên, ngoại trừ bạn cần sử dụng đối tượng FileAttachmentAnnotation để thực hiện yêu cầu này.
// Nhận ClientID và ClientSecret từ https://dashboard.aspose.cloud/
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// thể hiện createPdfApi
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// nhập tài liệu PDF
String name = "PdfWithTable.pdf";
// Tải tập tin từ hệ thống cục bộ
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// tải tập tin lên bộ nhớ đám mây
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// số trang cho tệp đầu vào nơi chú thích sẽ được thêm vào
int pageNumber = 1;
// vùng hình chữ nhật cho chú thích
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(100.)
.URX(200.)
.URY(200.);
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// tạo đối tượng FileAttachmentAnnotation
FileAttachmentAnnotation annotation = new FileAttachmentAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
// đường dẫn của tập tin đính kèm
annotation.setFilePath("images.jpeg");
// tên tập tin đính kèm
annotation.setFileName("images.jpeg");
// tạo List thể hiện của FileAttachment
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// gọi phương thức để thêm Chú thích FileAttachment vào trang đầu tiên của tài liệu
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
Phần kết luận
Trong bài viết này, chúng tôi đã thảo luận về các bước và thông tin chi tiết liên quan để thêm Chú thích Văn bản, Đa tuyến, Squiggly và FileAttachment vào tài liệu PDF. Vì Cloud SDK của chúng tôi là mã nguồn mở, bạn có thể tải xuống toàn bộ mã nguồn từ GitHub. Kho lưu trữ cũng chứa các ví dụ hữu ích khác về cách sử dụng Java Cloud SDK để tạo cũng như thao tác với các tệp PDF hiện có. Nếu bạn có bất kỳ thắc mắc liên quan nào, vui lòng liên hệ với chúng tôi qua diễn đàn hỗ trợ khách hàng miễn phí.
Bài viết liên quan
Chúng tôi thực sự khuyên bạn nên tham khảo các bài viết sau: