콘텐츠로 이동

ISO 19005-4 (PDF/A-4): NextPDF 기능 매핑

ISO 19005-4:2020(PDF/A-4)은 PDF 2.0 아카이브 프로파일입니다. 이 페이지는 이를 NextPDF에 있는 그대로 매핑합니다. 즉, Core가 내보내는 항목, nextpdf/pro 확장이 추가하는 항목, NextPDF가 명시적으로 다루지 않는 항목을 다룹니다. NextPDF는 PDF/A-4 관련 구조를 내보냅니다. 파일이 적합한지는 검증기만 단언할 수 있습니다.

Terminal window
composer require nextpdf/core:^3
# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:
# composer require nextpdf/pro

ISO 19005-4:2020은 ISO 32000-1:2008(PDF 1.7)을 기반으로 하는 PDF/A-2 및 PDF/A-3과 달리 ISO 32000-2:2020(PDF 2.0)을 기반으로 합니다. NextPDF는 이 계보 차이를 ConformanceMode::requiresPdf17()에 인코딩합니다. 이 메서드는 PDF/A-4의 모든 경우에는 false를, PDF/A-2 및 PDF/A-3에는 true를 반환합니다.

PDF/A-4는 세 가지 적합성 형태를 정의합니다. 기본 프로파일에는 pdfa:conformance 문자가 없습니다. PDF/A-4e(부속서 B, 엔지니어링 / 3D 콘텐츠)는 pdfa:conformance = E를 설정합니다. PDF/A-4f(부속서 A, 내장 파일)는 pdfa:conformance = F를 설정합니다. ISO 19005-4:2020 §6.7.3은 AIIM 네임스페이스에서 PDF/A 식별 스키마를 규정합니다. 이 조항은 PDF/A-4e도 PDF/A-4f도 아닌 파일이 pdfa:conformance 항목을 제공하지 않도록 지시합니다. NextPDF는 이를 ConformanceMode::pdfaConformanceLetter()에 정확히 반영합니다. PdfA4는 빈 문자열을, PdfA4eE를, PdfA4fF를 반환합니다.

중요한 에디션 경계는 다음과 같습니다. PDF/A-4 파일 작성 — OutputIntent 딕셔너리, 내장 ICC 프로파일, XMP 확장 스키마, 글꼴 서브셋 보장, 그리고 암호화 금지 —은 Enterprise PdfAManager에 구현되어 있습니다. Enterprise PdfAManagernextpdf/pro 확장에 포함되어 제공됩니다. Core 전용 설치에서는 Document::enablePdfA()InvalidConfigException을 발생시키며, 이는 security.pdfa 기능이 등록되어 있지 않기 때문입니다. 실행 가능한 예제(examples/32-pdfa4-icc.php)는 기능 레지스트리를 확인하고, 스택 추적 대신 명확한 메시지로 정상적으로 저하 처리해 이를 보여 줍니다.

따라서 Core 단독에서는 PDF/A-4 표면이 판별자 전용입니다. 즉, NextPDF는 문서가 선언하는 PDF/A-4 변형을 기록합니다. NextPDF는 스키마가 정의하는 pdfaid:part = 4 / pdfa:conformance 마커를 내보냅니다. 완전한 PDF/A-4 파일을 생성하는 것과 그 파일이 적합한지 검증하는 것은 별개의 단계입니다. 첫 번째 단계에는 nextpdf/pro가 필요합니다. 두 번째 단계에는 veraPDF가 필요합니다.

표면에디션제공 내용
ConformanceMode::PdfA4 / PdfA4e / PdfA4fcore변형 판별자
ConformanceMode::pdfaPart()4coreISO 19005 파트 번호
ConformanceMode::pdfaConformanceLetter()'' / 'E' / 'F'core§6.7.3 적합성 문자
ConformanceMode::requiresPdf17()falsecorePDF 2.0 계보 게이트
Document::enablePdfA()proOutputIntent + ICC + XMP 작성. Core에서는 InvalidConfigException을 발생시킴
<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
// Core: introspect the declared PDF/A-4f contract.
$mode = ConformanceMode::PdfA4f;
$mode->pdfaPart(); // 4
$mode->pdfaConformanceLetter(); // 'F' (ISO 19005-4:2020 §6.7.3 / Annex A)
$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Exception\InvalidConfigException;
use NextPDF\Support\CapabilityRegistry;
// PDF/A-4 file authoring requires the Premium extension. Probe first so a
// Core-only install gets a clear rationale, not a stack trace.
$registry = CapabilityRegistry::getInstance();
if (!$registry->get('security.pdfa')->isAvailable()) {
throw new InvalidConfigException(
configKey: 'security.pdfa',
givenValue: 'Core-only install',
expectedType: 'nextpdf/pro extension (Enterprise PdfAManager)',
);
}
$doc = Document::createStandalone();
$doc->enablePdfA(); // Emits OutputIntent + ICC + pdfaid XMP (Premium).
// … write content …
$doc->save(__DIR__ . '/out/archive-a4.pdf');
// The file now CARRIES PDF/A-4 structures. Conformance is still unproven
// until veraPDF asserts it:
//
// verapdf --flavour 4 out/archive-a4.pdf
  • Core는 PDF/A-4 파일을 작성할 수 없습니다. Core에서는 enablePdfA()가 예외를 발생시킵니다. 판별자와 XMP 마커만 Core 표면에 포함됩니다.
  • 기본 PDF/A-4는 pdfa:conformance를 내보내지 않습니다. ISO 19005-4:2020 §6.7.3에 따라 PDF/A-4e와 PDF/A-4f만 해당 문자를 설정합니다. ConformanceMode::PdfA4는 설계상 빈 문자열을 반환합니다.
  • PDF 1.7이 아닌 PDF 2.0 계보입니다. 흔한 오류는 %PDF-1.7을 기대하는 PDF/A-3 파이프라인을 재사용하는 것입니다. PDF/A-4는 PDF 2.0입니다. requiresPdf17()는 PDF/A-4의 모든 경우에 false를 반환합니다.
  • ICC 검증은 Premium입니다. ISO 19005-4:2020 §6.2.2 OutputIntent ICC 검증(acsp 매직, 태그 테이블, D50 백색점)은 Core가 아닌 Enterprise PdfAManager의 역할입니다.
  • 라이브러리는 파일을 인증하지 않습니다. PdfA4f를 설정하고 마커를 내보낸다고 해서 출력이 유효한 PDF/A-4f 파일이 되는 것은 아닙니다. veraPDF를 실행하십시오.

Core PDF/A-4 표면은 순수 값 타입 인트로스펙션입니다(enum match 디스패치, O(1), 할당 없음). Premium 작성 경로는 쓰기 작업에 OutputIntent와 ICC 패킷을 추가합니다. 그 비용은 내장 프로파일의 크기이며, 라이터 예산 내에서 처리됩니다. veraPDF 검증은 생성 단계에 포함되지 않는 대역 외 단계입니다.

PDF/A-4는 암호화를 금지합니다. Enterprise PdfAManager는 암호화 금지 불변식을 강제합니다. Enterprise PdfAManager는 이 불변식을 enablePdfA() 호출을 기준으로 적용해, 호출자가 실수로 AES-GCM과 아카이브 모드를 결합할 수 없도록 합니다. HasSecurity::enablePdfA()에 있는 Core의 사전 가드는 어떤 바이트도 기록되기 전에 지원되지 않는 조합을 거부합니다. 아카이브 파이프라인 세부 사항은 프로젝트 위협 모델을 참조하십시오.

이것은 적합성 주장이 아니라 기능 매핑입니다.

ISO 19005-4:2020 영역조항NextPDF 지원 범위상태
변형 식별 스키마§6.7.3ConformanceModepdfaid:part = 4pdfa:conformance 문자를 내보냄주장됨 (Core; tests/Unit/Conformance/에서 단위 테스트됨)
PDF 2.0 계보 게이트§6.7.3 / 기본requiresPdf17()가 모든 PDF/A-4 경우에 false를 반환함검증됨 (단위 테스트됨)
OutputIntent + 내장 ICC§6.2.2Enterprise PdfAManager (nextpdf/pro) 컴포넌트Premium 전용 (Core 아님)
XMP 확장 스키마, 글꼴 서브셋, 암호화 금지§6 / 부속서 A/BEnterprise PdfAManager (nextpdf/pro) 컴포넌트Premium 전용 (Core 아님)
적합성 판정조항 5NextPDF가 수행하지 않음 — veraPDF명시적 미지원

지원은 적합성이 아니며, 이 페이지는 둘을 의도적으로 구분합니다. (a) NextPDF Core는 ISO 19005-4:2020 §6.7.3이 변형 식별을 위해 정의하는 구조를 내보냅니다. 이는 구현이며, tests/Unit/Conformance/ConformanceModePdfAVariantTest.php(통과)로 입증됩니다. (b) 파일이 PDF/A-4에 적합한지는 ISO 19005-4:2020 조항 5에 따라 검증기만 내릴 수 있는 별도의 단언입니다. 조항 5는 적합성의 실제 판정이 검사 도구에 의해 규범적 요구사항을 기준으로 수행된다고 명시합니다. NextPDF는 주장 (a)를 합니다. NextPDF는 주장 (b)를 하지 않습니다. veraPDF로 검증하십시오(verapdf --flavour 4 …, 또는 오라클 하네스의 경우 php oracle/run.php — 이는 veraPDF 바이너리가 있을 때만 실행되는 옵트인 게이트입니다).

“PDF/A-4 준수”, “완전 적합”, “PDF/A-4 인증”이라는 문구는 이 페이지에서 의도적으로 제외되어 있습니다. NextPDF는 PDF/A-4 관련 구조를 내보냅니다. 적합한 파일을 보장하지는 않습니다.

인용문은 NextPDF 컴플라이언스 코퍼스에서 의역한 것입니다. 전체 64자 reference_id 다이제스트는 페이지 프런트매터와 docs/public/modules/core/_normative-evidence-conf.md에 기록되어 있습니다.