PDF/A lưu trữ dài hạn: 1b vs 2b vs 3b — yêu cầu lưu trữ Việt Nam
PDF/A-1b vs 2b vs 3b: khác biệt, use case, và yêu cầu lưu trữ theo Luật Lưu trữ 2024 Việt Nam.
Năm ngoái cơ quan mình chuyển đổi số, IT bảo "file lưu trữ phải dạng PDF/A". Mình hỏi "PDF/A là gì, khác PDF thường sao?" — được trả lời "cứ save as PDF/A là xong". Nhưng không đơn giản vậy — có 3 level, mỗi cái khác nhau, và Luật Lưu trữ 2024 có yêu cầu cụ thể.
Bài này mình tổng hợp lại sau khi research kỹ, hy vọng giúp ai đang gặp câu hỏi tương tự.
PDF/A là gì — bản chất
PDF/A (A = Archive) là subset của PDF, được thiết kế để file có thể mở được sau 50, 100 năm mà không phụ thuộc vào phần mềm hay hệ điều hành cụ thể.
Để làm được điều đó, PDF/A cấm một số thứ mà PDF thường cho phép:
- Cấm link tới resource bên ngoài — font phải embed, không được reference external
- Cấm JavaScript — code có thể không chạy được sau 20 năm
- Cấm encryption — file mã hóa mà quên password = mất vĩnh viễn
- Cấm transparency (PDF/A-1) — render có thể khác nhau tùy viewer
- Bắt buộc embed font — file tự chứa mọi thứ cần để hiển thị
- Bắt buộc có metadata XMP — để tra cứu, index
3 phiên bản phổ biến
| Phiên bản | Dựa trên | Đặc điểm chính | Dùng khi |
|---|---|---|---|
| PDF/A-1b (2005) | PDF 1.4 | Cơ bản nhất. "b" = visual appearance. Không yêu cầu text searchable | File scan, file cũ cần archive |
| PDF/A-2b (2011) | PDF 1.7 | Hỗ trợ JPEG2000, transparency, layers. Cho phép embed PDF/A khác bên trong | File thiết kế có transparency, file hiện đại |
| PDF/A-3b (2012) | PDF 1.7 | Cho phép embed BẤT KỲ file nào (Excel, XML, CAD...) | eInvoice (ZUGFeRD), hồ sơ kèm file gốc |
"b" nghĩa là "basic" — chỉ đảm bảo hiển thị đúng. Còn level "a" (accessible) yêu cầu thêm tagged PDF (để screen reader đọc), level "u" yêu cầu Unicode text mapping. Phần lớn trường hợp ở VN, dùng level "b" là đủ.
PDF/A-1b vs 2b — khác nhau ở đâu?
Mình từng convert 1 file brochure có transparency (bóng đổ, gradient) sang PDF/A-1b — kết quả: bóng đổ bị flatten thành ô vuông trắng. Chuyển sang PDF/A-2b thì OK vì 2b cho phép transparency.
Sự khác biệt quan trọng:
- 1b: Không transparency, không JPEG2000, không layers — file sau convert có thể trông khác bản gốc
- 2b: Hỗ trợ transparency, JPEG2000 (nén hiệu quả hơn), optional content groups (layers)
- 3b: Giống 2b + cho phép attach bất kỳ file — rất hữu ích cho eInvoice
Yêu cầu theo Luật Lưu trữ 2024 Việt Nam
Luật Lưu trữ số 33/2024/QH15 (có hiệu lực 1/7/2025) và Nghị định hướng dẫn có đề cập đến format lưu trữ điện tử. Theo mình tổng hợp:
— Tài liệu lưu trữ điện tử phải ở "định dạng mở, không phụ thuộc phần mềm chuyên dụng"
— PDF/A được chấp nhận làm format lưu trữ dài hạn
— Yêu cầu có metadata (tiêu đề, tác giả, ngày tạo, phông/mục lục hồ sơ)
— Chữ ký số phải đảm bảo tính toàn vẹn (với PDF/A-2b trở lên hỗ trợ PAdES signature)
Thực tế triển khai ở các cơ quan mình thấy: đa phần dùng PDF/A-1b vì đơn giản nhất. Một số bộ ngành có hệ thống hiện đại hơn (VNPT iOffice, Viettel eOffice) đã hỗ trợ PDF/A-2b.
Cách kiểm tra file có phải PDF/A không
Cách 1: Adobe Reader (miễn phí)
Mở file bằng Adobe Reader — nếu là PDF/A, sẽ hiện thanh bar xanh ở trên: "This file claims conformance to the PDF/A standard..." Nhanh, nhưng chỉ check claim chứ không validate thật sự.
Cách 2: veraPDF (chính xác nhất)
veraPDF là tool open-source, được PDF Association chính thức khuyên dùng. Nó validate đầy đủ các rule của PDF/A — không chỉ check claim.
Cài đặt: download từ verapdf.org (Java-based, chạy được trên Windows/Mac/Linux). Command line:
verapdf --flavour 1b file.pdf
Output cho biết file pass hay fail, fail ở rule nào cụ thể. Mình dùng tool này check file sau khi convert — phát hiện nhiều file tưởng là PDF/A nhưng thực ra fail (thiếu embed font, thiếu XMP metadata).
Cách 3: pdfinfo (nhanh)
pdfinfo file.pdf | grep "PDF version"
Nếu hiện "PDF version: 1.4 (PDF/A-1b)" thì OK. Nhưng cũng chỉ check header claim.
Cách tạo file PDF/A
Từ Microsoft Word
File → Save As → PDF → Options → "ISO 19005-1 compliant (PDF/A)". Lưu ý: Word chỉ export PDF/A-1b hoặc 1a, không hỗ trợ 2b/3b.
Từ LibreOffice
File → Export as PDF → chọn "Archive (PDF/A-1b)" hoặc "PDF/A-2b". LibreOffice hỗ trợ cả 2b — tốt hơn Word ở điểm này.
Từ file PDF có sẵn — convert bằng Ghostscript
gs -dPDFA=1 -dBATCH -dNOPAUSE -sProcessColorModel=DeviceRGB -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=output_pdfa.pdf input.pdf
Tham số -dPDFA=1 cho PDF/A-1b, -dPDFA=2 cho PDF/A-2b. Ghostscript sẽ tự embed font thiếu, remove JavaScript, flatten transparency (nếu 1b).
Sai lầm phổ biến
| Sai lầm | Thực tế |
|---|---|
| "Đổi đuôi .pdf thành .pdfa" | Không có đuôi .pdfa. PDF/A vẫn là file .pdf, khác ở nội dung bên trong |
| "PDF/A bảo mật hơn PDF thường" | Ngược lại — PDF/A cấm encryption. Nó tập trung vào bảo quản, không phải bảo mật |
| "Mọi PDF đều convert được sang PDF/A" | File có font không embed + font đó không có bản free → convert fail |
| "PDF/A-3 là tốt nhất vì version cao nhất" | 3b cho phép embed mọi file → nặng hơn, phức tạp hơn. Chỉ dùng khi thật cần |
Khi nào dùng PDF/A?
- Lưu trữ hồ sơ cơ quan nhà nước: Bắt buộc theo Luật Lưu trữ 2024 → PDF/A-1b hoặc 2b
- Hồ sơ pháp lý doanh nghiệp: Hợp đồng, biên bản → PDF/A-2b (hỗ trợ chữ ký số PAdES)
- Hóa đơn điện tử kèm XML: PDF/A-3b (embed file XML dữ liệu bên trong)
- Luận văn/nghiên cứu: Nhiều trường quốc tế yêu cầu nộp PDF/A
- File chia sẻ thông thường: Không cần — PDF thường nhẹ hơn, linh hoạt hơn
Tóm lại
PDF/A không phải "PDF xịn hơn" — nó là PDF bị hạn chế (cấm JS, cấm encrypt, bắt embed font) để đổi lấy khả năng mở được mãi mãi. Chọn đúng level (1b/2b/3b) tùy nhu cầu, validate bằng veraPDF trước khi archive, và nhớ: ở VN hiện tại PDF/A-1b là đủ cho đa phần trường hợp lưu trữ.