Trình kiểm tra chữ ký PDF là gì?
Trình kiểm tra chữ ký PDF là công cụ tìm dấu hiệu cấu trúc chữ ký trong dữ liệu PDF và trích xuất thông tin mô tả gần những dấu hiệu đó. Theo mã nguồn được cung cấp, công cụ giúp bạn đọc tên, ngày giờ, lý do ký, địa điểm và thông tin liên hệ khi các giá trị này xuất hiện ở dạng bộ quét nhận biết được.
Tìm thấy thông tin chữ ký không đồng nghĩa chữ ký đã được xác minh hợp lệ. Công cụ không kiểm tra bằng mật mã rằng nội dung còn nguyên vẹn, không đối chiếu danh tính người ký từ chứng thư và không xác nhận giá trị pháp lý của tài liệu. Kết quả nên được hiểu là danh sách metadata đọc được, thay vì chứng nhận tính xác thực.
Khi nhận hợp đồng, hóa đơn hoặc hồ sơ PDF từ bên khác, bạn có thể dùng công cụ để rà soát sơ bộ các thông tin ký đang có trong dữ liệu. Đầu vào là tệp PDF; đầu ra là các mục thông tin đánh số hoặc trạng thái không tìm thấy mục phù hợp.
Theo kiến thức nền, chữ ký số sử dụng cơ chế mật mã, khác với ảnh chữ ký viết tay được chèn lên trang. Một PDF nhìn thấy chữ ký bằng mắt chưa chắc chứa chữ ký số; ngược lại, chữ ký số cũng không bắt buộc phải có hình ảnh nổi bật trên trang.
Các thuật ngữ cần hiểu khi đọc thông tin chữ ký PDF
Chữ ký số trong PDF
Chữ ký số trong PDF là dữ liệu ký được tạo bằng cơ chế mật mã, hỗ trợ kiểm tra nguồn ký và tính toàn vẹn của phần tài liệu được ký. Đây là kiến thức nền về chủ đề, không phải toàn bộ chức năng của công cụ này. Bộ quét chỉ tìm dấu hiệu và thông tin mô tả, chưa thực hiện xác minh mật mã. Điểm dễ nhầm là coi hình chữ ký, con dấu hoặc dòng “đã ký” trên trang như bằng chứng rằng dữ liệu ký số tồn tại và hợp lệ.
Metadata chữ ký
Metadata chữ ký là thông tin mô tả đi kèm quá trình ký, chẳng hạn tên, ngày giờ, lý do, địa điểm và liên hệ. Đây là đầu ra chính mà công cụ cố gắng trích xuất. Metadata giúp bạn đối chiếu sơ bộ với điều đang chờ đợi, nhưng bản thân nội dung đọc được không chứng minh danh tính. Ví dụ, một tên khớp với người phụ trách hồ sơ vẫn cần được kiểm tra trong quy trình xác minh trước khi dùng làm căn cứ tin cậy.
Chứng thư số
Chứng thư số gắn khóa công khai với thông tin chủ thể theo cơ chế của bên cấp chứng thư. Khi xác minh chuyên sâu, người kiểm tra còn phải xem độ tin cậy, thời hạn và tình trạng liên quan của chứng thư. Công cụ không thực hiện các bước đó. Dù giao diện dùng nhãn “Chủ thể chứng thư”, tên hiển thị được lấy từ metadata gần dấu hiệu chữ ký, không phải kết quả phân tích và đối chiếu chứng thư. Hai nguồn thông tin này không nên được đánh đồng.
Dấu thời gian tin cậy
Dấu thời gian tin cậy là bằng chứng thời gian được xác nhận bằng cơ chế chuyên biệt, khác với một ngày giờ tự ghi trong metadata. Vai trò của nó liên quan đến việc chứng minh dữ liệu đã tồn tại tại thời điểm được xác nhận. Công cụ chỉ đọc và định dạng trường ngày giờ tìm thấy, không xác minh bằng chứng thời gian. Vì vậy, nhãn “Timestamp” hay thông báo “Không có TimeStamp” trên giao diện không đủ để kết luận tài liệu có hoặc không có dấu thời gian tin cậy.
Hexadecimal và UTF-16BE
Hexadecimal là cách biểu diễn dữ liệu bằng hệ thập lục phân; UTF-16BE là một cách mã hóa văn bản Unicode. Công cụ có nhánh chuyển chuỗi hex mang dấu nhận diện UTF-16BE thành chữ đọc được, hữu ích với một số tên hoặc lý do có dấu tiếng Việt. “Giải mã” ở đây là chuyển biểu diễn văn bản, không phải phá mã bảo mật hay kiểm tra chữ ký. Khả năng này cũng không có nghĩa mọi kiểu chuỗi trong PDF đều được đọc đầy đủ.
Tệp đầu vào và ý nghĩa các trường kết quả
Điều kiện nhận tệp và dung lượng hiển thị
Công cụ nhận tệp qua bộ chọn hoặc kéo thả, nhưng mỗi lần chỉ xử lý tệp đầu tiên. Điều kiện chấp nhận là loại MIME do trình duyệt cung cấp bằng application/pdf; phần mở rộng .pdf riêng lẻ không đủ bảo đảm tệp được nhận. Mã cũng không kiểm tra đầy đủ cấu trúc PDF trước khi quét.
Tên và dung lượng tệp được hiển thị để nhận biết tài liệu đang xem. Dung lượng được tính bằng số byte ÷ 1.048.576, rồi làm tròn đến hai chữ số thập phân. Giao diện ghi MB, nhưng phép chia này tương ứng với MiB. Không có ngưỡng dung lượng tối đa được khai báo trong phần xử lý đã cung cấp.
Cách đọc năm trường thông tin
| Trường | Ý nghĩa kết quả | Khi thiếu |
|---|---|---|
| Tên | Tên trích xuất từ vùng dữ liệu gần dấu hiệu chữ ký, chưa được đối chiếu từ chứng thư. | Không xác định / Ẩn |
| Ngày giờ | Ngày giờ metadata, được định dạng khi đủ phần chữ số cần thiết. | Không có TimeStamp |
| Lý do | Nội dung mô tả mục đích ký tìm thấy trong vùng quét. | Không có mô tả |
| Địa điểm | Thông tin địa điểm được ghi trong dữ liệu, không xác nhận vị trí thực tế. | Không có |
| Liên hệ | Nội dung liên hệ được trích xuất, không xác minh người sở hữu. | Không có |
Số kết quả cho biết điều gì?
Tổng số trên giao diện là số mục đáp ứng điều kiện của bộ quét, dù được gọi là số chữ ký tìm thấy. Nó không phải số chữ ký hợp lệ đã xác minh. Danh sách không kèm điểm tin cậy, kết luận toàn vẹn hoặc trạng thái chứng thư. Mã được cung cấp cũng không thể hiện chức năng tải xuống báo cáo.
Công cụ tìm và xử lý thông tin chữ ký như thế nào?
Từ dấu hiệu cấu trúc đến metadata
Công cụ đọc toàn bộ tệp trong trình duyệt, chuyển dữ liệu thành chuỗi bằng bộ giải mã có nhãn Latin1 rồi tìm mẫu /Type /Sig. Đây là cách tìm dấu hiệu văn bản trong dữ liệu, không phải phân tích đầy đủ mọi đối tượng và quan hệ của PDF.
Tại mỗi vị trí phát hiện, vùng tìm metadata kéo dài tối đa 500 ký tự phía trước và 2.000 ký tự phía sau, bị giới hạn bởi đầu và cuối dữ liệu. Bộ quét tìm từng trường trong vùng này mà không xác định đầy đủ ranh giới đối tượng. Do đó, thông tin nằm gần chưa chắc thuộc đúng dấu hiệu đang xét.
Sau khi đọc xong tệp, mã có khoảng chờ chủ động 500 mili giây trước khi quét. Khoảng chờ này nhằm thể hiện trạng thái đang xử lý, không phải cam kết hoàn thành trong nửa giây.
Điều kiện tạo một mục kết quả
Một dấu hiệu chỉ được giữ thành mục khi đọc được ít nhất một giá trị không rỗng thuộc ba trường: tên, ngày giờ hoặc lý do ký. Có một trong ba là đủ; không bắt buộc phải có đầy đủ thông tin.
Ngược lại, nếu vùng dữ liệu chỉ có địa điểm hoặc liên hệ thì không tạo mục. Những trường còn thiếu của một mục đã được giữ sẽ nhận thông báo mặc định. Quy tắc này giải thích vì sao số dấu hiệu xuất hiện trong dữ liệu có thể khác số mục được hiển thị.
Quy tắc đọc văn bản và ngày giờ
Với từng trường, công cụ ưu tiên chuỗi trong ngoặc tròn; nếu không tìm được mới thử dạng hexadecimal. Chuỗi trong ngoặc chỉ được xử lý escape đơn giản. Với hex có dấu nhận diện UTF-16BE, công cụ đọc từng nhóm bốn chữ số hex; dạng khác được đọc theo cặp. Đây là xử lý biểu diễn chữ, không phải xác minh mật mã.
Ngày giờ được bỏ tiền tố và ký tự không phải chữ số. Nếu còn dưới 14 chữ số, chuỗi gốc được giữ nguyên; nếu đủ, 14 chữ số đầu được sắp thành ngày/tháng/năm và giờ:phút:giây. Công cụ không kiểm tra tính hợp lệ lịch, không chuyển đổi múi giờ và không thể hiện độ lệch múi giờ trong kết quả định dạng.
Ví dụ đọc kết quả và trường hợp dễ hiểu nhầm
Các tình huống dưới đây là giả định suy ra từ quy tắc trong mã, không phải kết quả chạy thử. Giả sử tệp được chấp nhận theo MIME, dữ liệu nằm trong vùng tìm kiếm và các chuỗi có dạng đơn giản mà bộ quét đọc được.
Có tên, ngày giờ và lý do ký
Giả sử tệp có dung lượng 1.572.864 byte và một dấu hiệu chữ ký. Vùng lân cận chứa tên “Người ký minh họa”, ngày giờ D:20250115093045+07'00' và lý do “Duyệt tài liệu”, nhưng không có địa điểm hoặc liên hệ.
Phép tính 1.572.864 ÷ 1.048.576 = 1,5 khiến dung lượng hiển thị là 1.50 MB. Mục được giữ lại, thời gian hiện “15/01/2025 lúc 09:30:45”; địa điểm và liên hệ đều là “Không có”. Phần +07:00 không được hiển thị, nhưng giờ cũng không được đổi sang múi giờ khác. Trong thực tế, đây là thông tin đọc được, chưa phải kết luận chữ ký hợp lệ.
Có địa điểm nhưng không tạo được kết quả
Giả sử một vùng có dấu hiệu chữ ký, địa điểm “Văn phòng minh họa” và thông tin liên hệ, nhưng không có tên, ngày giờ hay lý do. Dù có hai trường mô tả, điều kiện giữ mục vẫn không đạt.
Danh sách vì vậy rỗng và giao diện báo “Không tìm thấy”. Cách hiểu phù hợp là không thu được mục đáp ứng quy tắc, chứ không phải giả định ban đầu về dấu hiệu chữ ký bị phủ nhận. Nếu cần xác định tài liệu thực sự có chữ ký số hay không, trường hợp này cần được kiểm tra bằng phương pháp khác.
Hai mục với thông tin chưa đầy đủ
Giả sử có hai dấu hiệu nằm đủ xa để vùng tìm kiếm không chồng lấn. Dấu hiệu thứ nhất chỉ có lý do “Phê duyệt bản nháp”; dấu hiệu thứ hai chỉ có tên “Người ký B”. Cả hai đều đáp ứng điều kiện, nên giao diện báo tìm thấy 2 chữ ký.
Mục đầu có tên “Không xác định / Ẩn”; mục sau có lý do “Không có mô tả”. Cả hai hiện “Không có TimeStamp” ở trường thời gian. Cách đọc thực tế là hai mục metadata được giữ với dữ liệu thiếu, không phải hai chữ ký đã xác thực hay bằng chứng rằng tài liệu chắc chắn không có dấu thời gian tin cậy.
Khi nào nên dùng công cụ để rà soát PDF?
Rà soát sơ bộ thông tin tài liệu
Công cụ phù hợp khi bạn muốn xem nhanh metadata ký trong tài liệu nhận từ bên khác. Với hợp đồng, hóa đơn hoặc hồ sơ, tên và lý do trích xuất có thể được đối chiếu ban đầu với người phụ trách hay mục đích phê duyệt mà bạn đang chờ đợi. Công cụ không hiểu nghiệp vụ của từng loại tài liệu và không đánh giá nội dung giao dịch.
Nếu xuất hiện nhiều mục, bạn có thể quan sát thông tin ở từng mục để nhận biết điều cần hỏi lại bên gửi. Tuy nhiên, thứ tự đánh số phản ánh quá trình bộ quét tìm dấu hiệu trong dữ liệu, không chứng minh thứ tự ký theo thời gian. Danh sách cũng không bảo đảm đã bao phủ tất cả người ký.
Chuẩn bị cho bước xác minh chuyên sâu
Kết quả rà soát hữu ích để chuẩn bị câu hỏi: tên có đúng người dự kiến không, lý do có phù hợp không, trường nào chưa đọc được? Khi thông tin khác kỳ vọng, nên yêu cầu làm rõ thay vì tự kết luận tài liệu giả hoặc chữ ký sai.
Hãy giữ bản gốc và chuyển sang quy trình xác minh chuyên dụng nếu kết quả sẽ ảnh hưởng đến thanh toán, tiếp nhận hồ sơ hoặc đánh giá pháp lý. Việc xem metadata nên tách khỏi chỉnh sửa tài liệu: mã được cung cấp không có chức năng điền biểu mẫu, thêm ghi chú, tạo chữ ký hay sửa PDF. Những thao tác đó không phải mục đích của bộ quét này.
Trích xuất metadata khác gì xác minh chữ ký số?
Hai cách làm trả lời hai câu hỏi khác nhau
Trích xuất metadata trả lời: “Bộ quét đọc được thông tin mô tả nào gần dấu hiệu chữ ký?”. Xác minh chữ ký số trả lời các câu hỏi về dữ liệu ký, tính toàn vẹn và độ tin cậy. Hai việc có thể bổ trợ khi rà soát tài liệu, nhưng không thay thế nhau.
| Nội dung | Bộ quét này | Xác minh chuyên sâu |
|---|---|---|
| Tên và lý do | Đọc metadata gần dấu hiệu. | Xem thông tin ký trong ngữ cảnh dữ liệu và chứng thư. |
| Ngày giờ | Định dạng trường đọc được. | Đánh giá bằng chứng thời gian nếu có. |
| Tính toàn vẹn | Không kiểm tra. | Kiểm tra bằng mật mã phần dữ liệu được ký. |
| Chứng thư | Không phân tích độ tin cậy. | Xem chuỗi tin cậy, thời hạn và tình trạng thu hồi. |
Những kiểm tra nằm ngoài bộ quét metadata
Theo kiến thức nền, quy trình xác minh có thể cần kiểm tra dữ liệu ký bằng khóa công khai, xác định phần tài liệu được bảo vệ và đánh giá các thay đổi sau ký. Việc đánh giá chứng thư hoặc dấu thời gian còn phụ thuộc bằng chứng và chính sách xác minh áp dụng. Đây không phải những chức năng được xác nhận trong công cụ.
Cũng cần phân biệt ảnh chữ ký, trường chữ ký và chữ ký số được xác minh. Ảnh là thành phần nhìn thấy trên trang; trường chữ ký có thể chỉ là nơi dành cho thao tác ký. Sự hiện diện hoặc hình thức của chúng không tự quyết định trạng thái xác thực, và kết quả kỹ thuật cũng không tự động giải quyết mọi câu hỏi pháp lý.
Giới hạn phát hiện và lưu ý với tài liệu nhạy cảm
Vì sao kết quả có thể thiếu hoặc nhầm?
Bộ quét không giải nén luồng đối tượng hoặc giải mã PDF được bảo vệ. Thông tin nằm ngoài vùng tìm kiếm, trong cấu trúc nén hoặc dùng chuỗi có ngoặc lồng nhau, xuống dòng và escape phức tạp có thể bị bỏ sót hay đọc sai.
Vùng tìm kiếm cũng có thể lấy metadata từ đối tượng lân cận. Khi các vùng chồng lấn, nhiều dấu hiệu có thể nhận cùng thông tin. Mã không khử trùng lặp và không đối chiếu đầy đủ cấu trúc biểu mẫu; chưa có tỷ lệ chính xác được cung cấp.
Hiểu đúng trạng thái không tìm thấy
“Không tìm thấy” nghĩa là không tạo được mục nào theo điều kiện của thuật toán. Thông báo chi tiết trên giao diện khẳng định mạnh hơn, nhưng bằng chứng từ cách quét không hỗ trợ kết luận chắc chắn rằng tài liệu không chứa chữ ký số. Khi kết quả trái kỳ vọng, cần kiểm tra bổ sung thay vì dùng trạng thái này làm bằng chứng phủ định.
Dung lượng và phạm vi bảo đảm dữ liệu
Phần mã đã cung cấp đọc và quét trong trình duyệt, nhưng chưa có toàn bộ môi trường trang để xác minh các script khác, truyền dữ liệu, lưu trữ hay hoạt động ngoại tuyến. Không có cơ sở bảo đảm toàn website không tải tài liệu lên hoặc bảo mật tuyệt đối.
Nội dung trích xuất được hiển thị theo cách có thể diễn giải HTML, nên độ an toàn với dữ liệu không đáng tin cậy chưa được xác minh đầy đủ. Tài liệu nhạy cảm cần tuân thủ chính sách của đơn vị. Ngoài ra, không có ngưỡng dung lượng không nghĩa là xử lý vô hạn: đọc toàn bộ tệp có thể gây áp lực bộ nhớ, và chưa có số liệu hiệu năng hay xử lý lỗi đầy đủ.
Câu hỏi thường gặp
Tìm thấy một hoặc nhiều chữ ký có nghĩa là PDF đã được xác minh hợp lệ chưa?
Chưa. Con số tìm thấy chỉ phản ánh các mục được bộ quét giữ lại theo dấu hiệu và metadata đọc được. Nó không xác nhận phép kiểm tra mật mã thành công, chứng thư đáng tin cậy hoặc tài liệu không bị thay đổi. Bạn có thể dùng kết quả để định hướng rà soát, nhưng nếu cần quyết định dựa trên tính xác thực, phải có bước xác minh riêng và xem phạm vi dữ liệu thực sự được ký.
PDF có chữ ký nhưng công cụ báo Không tìm thấy thì nên hiểu thế nào?
Nên hiểu là bộ quét chưa thu được mục phù hợp, không phải chắc chắn PDF không có chữ ký. Thông tin có thể nằm ở dạng bộ quét không đọc được, ngoài vùng lân cận hoặc thiếu cả tên, ngày giờ và lý do. Nếu bạn đã có căn cứ rằng tài liệu được ký, hãy giữ nguyên bản và kiểm tra bằng phương pháp phân tích chữ ký chuyên dụng. Không nên bác bỏ hồ sơ chỉ dựa trên thông báo này.
Ảnh chữ ký viết tay hoặc con dấu trên PDF có được công cụ phát hiện không?
Công cụ không có chức năng nhận dạng ảnh chữ ký viết tay hoặc con dấu được thể hiện trong mã. Nó tìm mẫu cấu trúc trong dữ liệu, không phân tích hình ảnh trên trang. Một bản scan có chữ ký rõ ràng bằng mắt có thể không tạo ra kết quả nào. Ngược lại, nếu PDF vừa có ảnh minh họa vừa có dữ liệu ký số, mục được đọc vẫn dựa vào dấu hiệu và metadata, không phải vì ảnh trông giống chữ ký.
Vì sao tệp có đuôi .pdf vẫn bị từ chối?
Vì điều kiện tiếp nhận dựa trên MIME do trình duyệt báo, cụ thể là application/pdf, chứ không chỉ nhìn phần đuôi tên. Nếu MIME trống hoặc khác giá trị này, tệp bị từ chối dù tên kết thúc bằng .pdf. Điều đó không tự chứng minh tệp hỏng. Bạn nên kiểm tra lại nguồn tài liệu và khả năng mở bằng ứng dụng đọc PDF; chỉ đổi tên tệp không bảo đảm loại dữ liệu hoặc cách trình duyệt nhận diện sẽ thay đổi.
Vì sao tên người ký hiện Không xác định / Ẩn dù PDF có chữ ký?
Thông báo này xuất hiện khi một mục được giữ nhờ ngày giờ hoặc lý do, nhưng bộ quét không lấy được tên. Tên có thể không được ghi ở vị trí nhận biết được, nằm ngoài vùng tìm kiếm hoặc dùng cách biểu diễn chưa hỗ trợ. Cụm “Ẩn” là thông báo mặc định, không chứng minh người ký cố tình giấu danh tính. Muốn xác định chủ thể, cần xem chứng thư và kết quả xác minh thay vì suy luận từ ô tên thiếu.
Thời gian hiển thị có phải dấu thời gian tin cậy và đã đổi múi giờ chưa?
Không thể coi đó là dấu thời gian tin cậy, và công cụ không chuyển đổi múi giờ. Nó chỉ sắp xếp phần chữ số ngày giờ đọc được sang dạng dễ nhìn; phần độ lệch múi giờ không xuất hiện trong kết quả định dạng. Vì vậy, khi so sánh thời điểm giữa các tài liệu, bạn cần biết ngữ cảnh múi giờ của dữ liệu gốc. Nhãn thời gian cũng không cho biết bằng chứng thời gian đã được một dịch vụ tin cậy xác nhận.
Có thể khẳng định tài liệu không bị tải lên, lưu lại hoặc lộ dữ liệu không?
Không thể khẳng định điều đó cho toàn website chỉ từ mã đã cung cấp. Logic đọc và quét đang xét diễn ra trong trình duyệt, nhưng môi trường trang, các thành phần khác và cơ chế lưu trữ chưa được xác minh đầy đủ. Cũng không có cơ sở tuyên bố an toàn tuyệt đối khi hiển thị nội dung từ tài liệu không đáng tin cậy. Với hợp đồng mật hoặc dữ liệu cá nhân, hãy chỉ sử dụng môi trường được đơn vị cho phép và tuân thủ quy định xử lý dữ liệu.


18 bình luận
Võ Tuấn Hùng
Có OTP code generator bên cạnh tiện ghê, nhưng nên ghi mô tả ngắn để người mới biết mỗi công cụ dùng làm gì.
Đỗ Hữu Nhung
Nếu tài liệu PDF có mật khẩu thì phải mở khóa trước hay có thể nhập mật khẩu ngay trên trang?
Phan Văn Vy
Mình thấy có cả String obfuscator trong danh sách công cụ tương tự. Công cụ này dùng để làm rối chuỗi như thế nào vậy?
Lê Bảo Nhung
Có thể bổ sung nút tải báo cáo kiểm tra chữ ký về máy không? Mình cần gửi kết quả cho đồng nghiệp.
Bùi Tuấn Khánh
Tool khá tiện nha, đỡ phải mở phần mềm riêng chỉ để xem chữ ký trên tài liệu 😀
Hồ Tuấn Hùng
mong web them keo tha file pdf vao, chon tu thu muc nhieu lan hoi mat cong
Vũ Thị Trang
Web có lưu lại file mình tải lên không? Mình muốn kiểm tra hợp đồng nhưng hơi lo về bảo mật.
Ngô Bảo Mai
xai tren dien thoai cung on, ma nut chon tai lieu to hon chut nua thi de bam hon
Phan Hải Hương
Góp ý nhỏ là nên ghi rõ dung lượng PDF tối đa ngay cạnh chỗ chọn file.
Lý Thanh Quyên
Ước gì có ví dụ kết quả phân tích mẫu để mình biết công cụ sẽ kiểm tra những thông tin nào.
Dương Ngọc Khánh
Phần Các Công Cụ Tương Tự khá hữu ích, đang kiểm tra PDF lại tiện ghé qua JWT parser luôn.
Dương Đức Hương
Tool ngon á, giao diện gọn nên dùng không bị rối mắt như mấy trang mình thử trước đó.
Nguyễn Gia Bình
Basic auth generator có hướng dẫn sử dụng không ad? Mình thấy trong mục công cụ tương tự mà chưa biết bắt đầu thế nào.
Hoàng Văn Vinh
Mong phần kết quả giải thích thêm vì sao chữ ký không hợp lệ để người không rành kỹ thuật cũng hiểu.
Đỗ Quốc Phúc
Minh chon file pdf roi ma chua thay ket qua, co can bam them nut nao khong?
Bùi Hải Thảo
Giao diện đơn giản, chọn tài liệu PDF rồi xem kết quả luôn, không phải mò nhiều bước.
Phạm Quốc Châu
Cho mình hỏi công cụ kiểm tra chữ ký số hay kiểm tra được cả chữ ký viết tay chèn vào PDF vậy?
Huỳnh Hải Phúc
Mình vừa kiểm tra một file hợp đồng PDF, kết quả phân tích khá rõ ràng, dễ theo dõi.