PDF/A는 PDF의 아카이브용 형태입니다. 2026년에 보이는 문서가 2050년에도 같은 방식으로 render 되도록 보장하기 위한 profile입니다. 주요 profile은 PDF/A-1, 2, 3, 4이고 각각 conformance level이 있습니다. 그중 PDF/A-3는 EU 전자 인보이스를 조용히 떠받치는 profile이며, 널리 쓰이는 PDF/A 중 임의 파일 첨부를 아카이브 wrapper 안에 둘 수 있는 유일한 profile입니다.
Invoice, regulatory filing, 또는 “PDF + structured data” workflow를 다룬다면 PDF/A-3를 만나게 됩니다. 여기서는 무엇이 다른지, 어떻게 쓰이는지, 파일이 정말 compliant인지 확인하는 방법을 정리합니다.
PDF/A 계열 한눈에 보기
| Profile | ISO part | Year | 핵심 특징 |
|---|---|---|---|
| PDF/A-1 | 19005-1 | 2005 | 첫 아카이브 profile. Transparency와 JavaScript 없음, fonts embedded. |
| PDF/A-2 | 19005-2 | 2011 | JPEG2000, transparency, layer support 추가. Print fidelity 향상. |
| PDF/A-3 | 19005-3 | 2012 | Embedded file attachments 추가. Factur-X / ZUGFeRD wrapper. |
| PDF/A-4 | 19005-4 | 2020 | 현대적 revision. conformance model 정리, b vs a 분리 없음. |
Sub-level은 다음과 같습니다.
- b (basic): 시각적 재현성을 보존하지만 semantic-content guarantee는 없습니다.
- a (accessible): structure tagging + Unicode mapping으로 screen reader가 순서대로 텍스트를 추출합니다.
- u (Unicode): Unicode mapping은 있지만 full structure는 없습니다.
- e / f (PDF/A-4 전용): engineering 3D content와 full forms.
따라서 “PDF/A-3b”는 attachment가 허용되는 archive profile 3과 accessibility tagging이 필수가 아닌 basic level의 조합입니다. 인보이스에서는 가장 흔한 variant입니다.
PDF/A-3가 특별한 이유
PDF/A-1과 PDF/A-2는 arbitrary embedded files를 금지합니다. 아카이브 PDF는 self-contained여야 하기 때문입니다. 내부의 data.xlsx가 PDF와 별도로 손상되면 아카이브 보장이 깨질 수 있습니다.
PDF/A-3는 엄격한 조건 아래 이 규칙을 완화합니다. 각 embedded file은 visible PDF content와의 관계를 설명하는 AFRelationship attribute를 가져야 합니다. 유효한 값은 Source, Data, Alternative, Supplement, Unspecified입니다. PDF는 attachment를 /AF array에 나열하고 해당 attached file을 설명하는 XMP metadata도 내보내야 합니다.
즉 PDF/A-3는 “첨부는 가능하지만, 그것이 무엇이고 사람이 보는 PDF와 어떤 관계인지 명확히 선언하라”고 말합니다. 이 선언이 e-invoicing의 기반입니다. 사람이 읽는 invoice는 PDF에, 기계가 읽는 EN 16931 CII XML은 attachment에 들어가며, AFRelationship="Alternative"는 둘이 같은 invoice의 alternative representation임을 뜻합니다.
Production에서 PDF/A-3가 쓰이는 곳
- Factur-X (프랑스, 2026년부터 B2B 단계적 의무화): PDF/A-3 + CII XML, XMP namespace
urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#. - ZUGFeRD 2.x (독일, 2025년부터 수신 의무): PDF/A-3 + CII XML, XMP namespace
urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#. - Engineering CAD archival: native CAD file을 첨부한 PDF/A-3. PDF는 rendering, CAD는 source입니다.
- Regulatory submissions: FDA submissions나 EU 상장사의 ESEF financial reports처럼 XML payloads가 첨부된 PDF/A-3.
이 경우 wrapper는 단순 container가 아닙니다. PDF와 attached file이 같은 document이고 둘 다 validate되어야 한다는 contract입니다.
PDF/A-3 compliance 검증 방법
공식 conformance checker는 PDF Association이 관리하는 veraPDF(verapdf.org)입니다. ISO 19005-3 rule set을 구현합니다. veraPDF가 “Pass — PDF/A-3b”를 보고하면 단일 engine이 줄 수 있는 가장 강한 신호입니다.
하지만 single-engine “Pass”는 audit-grade standard가 아닙니다(Why two PDF/A validators are better than one 참고). 감사 수준에서는 두 independent engines를 실행하고 둘 다 pass할 때만 compliant로 봅니다.
E-invoice 파일에는 또 하나가 필요합니다. Mustang(mustangproject.org)은 Factur-X / ZUGFeRD의 de-facto checker로, embedded CII XML을 EN 16931 Schematron에 대해 validate합니다. PDF/A-3 conformance만으로는 부족합니다. Attached XML이 valid EN 16931이 아니면 수신 측 AP system이 invoice를 reject합니다.
많은 팀은 Java, veraPDF CLI, Mustang을 설치하고 shell script로 출력을 묶습니다. 동작하지만 번거롭습니다.
validator 는 세 engine을 browser에서 실행합니다.
- veraPDF: official reference, PDF/A-3 conformance.
- gPdf Rust+WASM edge engine: independent re-implementation, second opinion.
- Mustang: embedded e-invoice payloads용 EN 16931 CII XML Schematron.
파일을 drop하면 세 engine이 parallel로 실행되고 report가 side-by-side로 돌아옵니다. QA evidence용 JSON 다운로드도 가능합니다. Login도 quota도 없습니다.
Report에서 확인할 것
Failures는 보통 다음에 몰립니다.
- Embedded file metadata missing:
/AFarray가 없거나 embedded file이 그 안에 listed되지 않음. - AFRelationship missing or wrong: e-invoice는
Alternative여야 합니다. 많은 PDF libraries는 default로Source또는Data를 씁니다. - XMP namespace missing or wrong: Factur-X와 ZUGFeRD에는 고정 namespace URI가 있으며, 한 글자 typo도 fail됩니다.
- Fonts not subsetted or not embedded: PDF/A는 문서에서 쓰인 모든 glyphs가 font와 함께 embedded되어야 합니다.
- Output intent missing: 흑백 텍스트 문서라도 PDF/A는 colour intent(sRGB 또는 다른 ICC profile)를 요구합니다.
- Document metadata incomplete: information dictionary에
/Title,/Producer,/CreationDate가 있어야 합니다.
Report는 보통 관련 spec section을 가리킵니다. 생성 source에서 고치세요. gPdf로 generate한다면 API가 이를 자동 처리하고 validator가 public receipt가 됩니다.
TL;DR
PDF/A-3 = PDF/A-2 + arbitrary files를 합법적으로 embed할 수 있는 기능입니다. 이 기능 덕분에 EU e-invoicing이 실용화됩니다. Human-readable invoice와 structured EN 16931 CII XML이 하나의 archival wrapper에 들어갑니다. PDF/A-3 wrapper와 attached XML이 모두 pass해야 합니다.
POST /api/v1/e-invoice/render로 generate하고 validator에서 verify하세요. 세 engines(veraPDF + gPdf edge + Mustang), 한 번 upload, 무료입니다.