콘텐츠로 이동

아카이브와 PDF/A

Spec: ISO 19005-4:2020, PDF/A-4 Spec: ISO 19005-2, PDF/A-2 Evidence: Standard-backed

PDF/A는 문서가 수십 년 뒤, 아직 존재하지도 않는 소프트웨어에서도 읽히고 충실하게 재현되어야 할 때 선택하는 형식입니다. 이 페이지는 그 보장이 실제로 어디까지 미치는지, NextPDF가 어떻게 적합한 파일을 생성하는지, 그리고 팀이 흔히 예상하지 못하는 부분을 설명합니다. PDF/A를 생성하는 것과 파일이 PDF/A임을 증명하는 것은 서로 다른 작업입니다. 두 번째 작업은 여전히 사용자의 몫입니다.

아카이브 의무는 조용하지만 가차 없습니다. 파일이 오늘은 멀쩡해 보이므로 그대로 보관됩니다. 임베드되지 않은 글꼴, 장치 종속 색상, 암호화된 트레일러 같은 문제는 몇 년 뒤에야, 원래 환경이 사라지고 문서가 어떻게 보여야 했는지 아무도 복원할 수 없을 때 드러납니다. 그때 치르는 대가는 단순한 재렌더링 비용이 아닙니다. 기록 자체가 더 이상 신뢰할 수 없게 됩니다.

PDF/A는 바로 그런 유형의 실패를 제거하기 위해 존재합니다. 하지만 “우리는 PDF/A 라이브러리를 사용했다”는 것은 “이 파일이 적합하다”는 것과 같지 않습니다. 둘을 혼동하면 아카이브에는 보존된 것처럼 보일 뿐인 문서가 쌓입니다.

  • PDF/A의 목적은 시간이 지나도 충실하고 자기 완결적이며 장치 독립적인 재현입니다 — 문서를 만든 도구와 무관하게 문서의 정적인 시각적 외관을 보존합니다(ISO 19005-2 Introduction).
  • 이를 위해서는 구체적인 제약이 필요합니다: 모든 글꼴 임베드, 장치 독립적 색상(직접 지정하거나 출력 인텐트를 통해; ISO 19005-4 §6.2.4.1), 그리고 트레일러에 암호화 없음.
  • NextPDF는 명시적 옵트인 모드를 통해 PDF/A를 생성하며, 적합하지 않은 파일을 조용히 내놓는 대신 호환되지 않는 작업을 거부합니다.
  • 적합성은 생성기가 단언하는 것이 아니라 검사 도구가 결정합니다. 표준이 의도한 보존 성공조차 주변 아카이브 환경과 절차에 달려 있습니다(ISO 19005-4 Introduction). 출력물 검증은 여전히 사용자가 수행해야 하는 단계입니다.

NextPDF는 PDF/A를 후처리 필터가 아니라 문서가 들어가는 모드로 취급합니다. 이 모드는 옵트인입니다. 한번 켜지면, 적합성을 깨뜨릴 수 있는 작업으로부터 문서를 능동적으로 보호합니다. 설계 원칙은 빠른 실패(fail-fast)입니다. 아카이브용처럼 보이지만 실제로는 아닌 파일을 돌려주는 것보다, 암호화된 PDF/A 요청을 명확히 거부하는 편이 낫습니다.

이 시나리오에는 네 단계가 있으며, 세 번째 단계는 팀이 흔히 건너뛰는 단계입니다.

  1. Compose for permanence Embed every font, use device-independent colour or an output intent, and avoid features the chosen PDF/A part forbids.
  2. Enable the PDF/A mode Opt in explicitly to the target conformance level. The mode now guards the document against incompatible operations.
  3. Validate independently Run a conformance checker. A passing report — not the producing library — is the evidence the archive needs.
  4. Preserve with procedure Store under records-management policy. The standard itself notes archival success depends on the environment, not the file alone.
아카이브 시나리오의 처음부터 끝까지: 엔진은 적합한 후보를 생성하고 적합성을 깨뜨리는 작업을 거부하며, 독립적인 검증기가 아카이브에 실제로 중요한 판정을 내립니다.

옵트인은 단순한 플래그가 아니라 실제 가드입니다. PDF/A 모드가 활성화된 상태에서 호환되지 않는 작업 — AES-GCM이나 표준 암호화 핸들러를 켜는 것 — 이 시도되면, 엔진은 타입이 지정된 비호환 오류를 발생시킵니다. 이 가드는 어느 순서에서도 작동합니다: PDF/A를 켠 뒤 암호화를 요청하든, 암호화를 요청한 뒤 PDF/A를 켜든 마찬가지입니다. 어느 쪽이든 결과는 명확한 거부입니다. ISO 19005는 적합한 파일의 트레일러에 Encrypt 키를 두는 것을 금지하며, 엔진은 이를 권고가 아니라 구속력 있는 요구 사항으로 취급합니다.

이 모드는 내부 상태도 정확하게 유지합니다. 특정 파트(예: PDF/A-3 바이트 충실 레벨 대 PDF/A-4)에 대해 PDF/A를 활성화하면 문서의 적합성 판별자가 그에 맞게 설정됩니다. 그러면 파트에 의존하는 라이터 측 게이트가 오래된 기본값이 아니라 올바른 값을 보게 됩니다. 바로 이런 내부 일관성이 검증기의 파일 통과 여부를 좌우합니다.

이 페이지는 전반에 걸쳐 표준 기반입니다. Evidence: Standard-backed

목적은 표준에 의해 고정되어 있습니다. Spec: ISO 19005-2 PDF/A의 주된 목적이 전자 문서를 표현하기 위한 메커니즘을 제공하는 데 있으며, 이를 통해 문서의 정적인 시각적 외관이 시간이 지나도, 사용된 도구와 시스템과 무관하게 보존된다고 명시합니다. 제약은 그로부터 따라 나옵니다: Spec: ISO 19005-4:2020, §6.2.4.1 색상을 장치 독립적으로, 직접 지정하거나 PDF/A 출력 인텐트를 통해 지정하도록 요구합니다. 글꼴 요구 사항은 기반 형식에서 한층 강화됩니다 — Spec: ISO 32000-2:2020, §9 가장 예측 가능하고 신뢰할 수 있는 렌더링은 모든 글꼴이 임베드될 때 일어난다고 언급하며, 이는 아카이브에 반드시 필요한 바로 그 속성입니다.

경계 또한 단순한 편집상 주의가 아니라 표준 안에 있습니다. Spec: ISO 19005-4:2020 그 Introduction에서 다음과 같이 명시합니다: 아카이브 목적의 성공적인 구현은 조직의 아카이브 환경, 기록 관리 정책, 그리고 추가적인 지속성 조건에 달려 있습니다. 적합성은 표준의 규범적 요구 사항을 기준으로 검사 도구가 판정하는 것이지, 생성기가 선언하는 것이 아닙니다.

엔진 동작은 코드로 뒷받침됩니다: Evidence: Code-backed Document::enablePdfA()는 명시적 옵트인으로, 암호화와 PDF/A가 어떤 순서로 결합되더라도 타입이 지정된 비호환 오류를 발생시키고, 문서의 적합성 판별자를 선택된 파트와 정확히 일치하도록 유지합니다.

아래 코드는 그 접점에서 가드가 어떻게 작동하는지를 보여 줍니다. 이 PDF/A 모드 자체는 Premium 등급 기능입니다. 적합성 검사는 별도의 독립적인 단계입니다.

<?php
declare(strict_types=1);
use NextPDF\Contracts\PdfDocumentInterface;
use NextPDF\Security\Exception\IncompatiblePdfAModeException;
/**
* Produce an archival candidate, then prove it independently.
*
* The engine refuses conformance-breaking combinations; it does NOT
* certify the result. A validator does that.
*
* @param PdfDocumentInterface $doc A document with all fonts embedded
* @param object $pdfaLevel The target PDF/A version (Premium enum)
*
* @return string The archival candidate's bytes — not yet a verified PDF/A
*/
function buildArchivalCandidate(
PdfDocumentInterface $doc,
object $pdfaLevel,
): string {
try {
// Opt in explicitly. From here the mode guards the document.
$doc->enablePdfA($pdfaLevel);
} catch (IncompatiblePdfAModeException $e) {
// e.g. encryption was already requested — refused, not silently
// downgraded into a non-conforming "archival" file.
throw new \RuntimeException(
'PDF/A and encryption are mutually exclusive for a conforming '
. 'file; resolve before archiving.',
previous: $e,
);
}
$bytes = $doc->getPdfData();
// The step teams skip: this is a CANDIDATE. Run an independent
// conformance validator before treating it as a preserved record.
return $bytes;
}

반환문에 달린 주석이 핵심입니다. 함수 이름도 의도적으로 *후보(candidate)*라고 말합니다. 엔진은 적합하도록 의도된 결과물을 생성했습니다. 검사기만이 “적합해야 한다”는 의도를 증거로 바꿉니다.

한 가지 오해가 아카이브를 보존되지 않은 문서로 채웁니다: “라이브러리가 PDF/A라고 하니, 따라서 그 파일은 PDF/A다.” 그 판정은 라이브러리의 몫이 아닙니다. 생성기는 적합하도록 의도한 파일을 내놓고도 여전히 규범적 요구 사항을 놓칠 수 있습니다. 적합성은 검증 도구가 표준에 대해 결정합니다. 감사인이나 미래의 독자가 의존하는 것은 바로 그 결정입니다. 생성 라이브러리의 의도를 증거로 취급하는 것이 핵심적인 오류입니다.

두 번째이면서 더 미묘한 함정은 PDF/A만으로 문서가 보존된다고 가정하는 것입니다. 표준 자체가 아카이브의 성공을 주변 환경과 절차에 결부시킵니다. 관리 규율이 없는 저장소에 놓인 적합한 파일은 여전히 위험에 노출되어 있습니다. 형식은 필요조건이지 충분조건이 아닙니다.

  • NextPDF는 적합한 후보를 생성할 뿐, 적합성을 인증하지는 않습니다. 독립적인 검증기를 실행하십시오. 증거는 생성 라이브러리가 아니라 통과 보고서에서 나옵니다.
  • PDF/A 적합성 모드는 Premium 등급 기능입니다. Core는 일반 PDF 2.0을 내놓고 실행 가능한 업그레이드 경로를 안내합니다. PDF/A 보장을 제공하지 않습니다. 아래 경계를 참고하십시오.
  • PDF/A와 암호화는 적합한 파일에 대해 상호 배타적입니다. 엔진은 조용히 품질을 낮추는 대신 그 조합이 어떤 순서로 시도되더라도 거부합니다.
  • 엔진은 제공되지 않은 글꼴을 임베드하거나 사용자가 제공한 장치 종속 색상을 고칠 수 없습니다. 영속성을 위한 구성, 즉 임베드된 글꼴과 장치 독립적 색상은 입력 측의 책임입니다.
  • 아카이브의 내구성은 파일 단독이 아니라 프로세스에 달려 있습니다. ISO 19005는 조직의 보존 및 기록 관리 절차를 성공적인 보존의 일부로 삼습니다.
  • 이 페이지는 표준 기반이며 Premium 표면의 동작 수준을 다룹니다. 어떤 인증도 주장하지 않고, 어떤 인증도 부여하지 않습니다.
PDF/A archival conformance — edition availability
Edition Availability
Core

Core는 일반 PDF 2.0만 생성합니다. enablePdfA()는 실행 가능한 상용 패키지를 가리키는 업그레이드 오류를 발생시킵니다. Core 전용 PDF/A 보장은 없습니다.

Pro

PDF/A 적합성 모드(바이트 충실 PDF/A-3 레벨 및 PDF/A-4 포함)를 암호화 비호환 가드와 함께 사용할 수 있습니다.

Enterprise

구조적 PDF/A 적합성 정책과 보고서를 추가합니다(여전히 인증이 아니라 구조 검사입니다 — 최종 판정은 검증기와 사용자의 컴플라이언스 팀에 있습니다).

  • 글꼴: 어려운 부분 — 겉보기에는 올바른 글꼴이 어떻게 여전히 파일을 비적합 상태로 만들거나 검색 불가능하게 만들 수 있는지.
  • 골든 파일 테스트 — 고정된 참조 출력이 아카이브 보장을 조용히 깨뜨리는 바이트 드리프트를 어떻게 포착하는지.
  • 인보이스와 전자 인보이싱 — 가장 가까운 관련 주제: 하이브리드 인보이스 캐리어는 그 자체가 PDF/A 파일입니다.
  • PDF/AISO 19005 계열: 장기 보존을 위한 제약된 PDF 프로파일로, 생성 도구와 무관하게 문서의 정적인 외관을 시간이 지나도 재현하도록 설계되었습니다.
  • 적합성 레벨 / 파트 — 특정 PDF/A 변종(예: PDF/A-2, PDF/A-3, PDF/A-4 및 그 하위 레벨); 각각 사용 가능한 PDF 기능을 제약합니다.
  • 출력 인텐트 — 장치 종속 색상을 장치 독립적으로 해석할 수 있게 해 주는 임베드된 색상 특성화 프로파일.
  • 장치 독립적 색상 — 렌더링 장치와 무관하게 일관되게 재현되도록 지정된 색상으로, PDF/A 요구 사항입니다.
  • 적합성 검사기 / 검증기 — 표준의 규범적 요구 사항에 대해 파일을 판정하는 독립적인 소프트웨어이며, 적합성 판정의 출처입니다.
  • 아카이브 후보 — 적합하도록 의도하여 생성한 파일로, 독립적인 검증기가 실제로 적합함을 확인하기 전 상태입니다.