네이티브 Linux 아카이브 폰트 복구
네이티브 텍스트/벡터 PDF/A-4 변환은 설정된 Ghostscript pdfwrite 프로세스로 없는 폰트를 명시적으로 정규화하고, 검색 가능한 텍스트와 벡터 경로를 유지하며, 발행 전에 공식 veraPDF CLI로 최종 네이티브 아카이브 문서를 검증할 수 있습니다
콜백 ABI
{"schemaVersion":1,"type":"pdfa.convert","mode":"preserve","profile":"PDF/A-4","fontRepair":true,"maxFontRepairMilliseconds":120000}
fontRepair 기본값은 false입니다. true로 두면 설치된 Ghostscript 폰트 설정에 따른 폰트 대체를 명시적으로 허용하고, 정규화에 성공하면 fontRepairPerformed true를 반환합니다
응답에는 textAndVectorsPreserved, validationSucceeded, pageCount와 기존 제거 field·서명·주석 카운트도 들어갑니다. 성공한 발행은 핸들을 검증된 암호화 없는 아카이브 문서로 교체합니다
Pascal 설정
Options := THPDFHeadlessArchivalPreservationOptions.Default;
Options.FontRepair := True;
Options.GhostscriptExecutable := '/usr/bin/gs';
Options.MaxFontRepairMilliseconds := 120000;
Report := HPDFConvertHeadlessToPDFA4PreservingFile(Document, Destination, Options);
GhostscriptExecutable은 정규화 실행 파일을, JavaExecutable과 ValidatorJAR은 진짜 검증기를 고르고, CancellationToken은 리소스 순회, 텍스트 검사, 정규화, 검증에 적용됩니다
처리와 한도
변환기는 소스 페이지 리소스를 먼저 임포트하고 대상 주석 appearance를 비공개 네이티브 문서로 평탄화하므로, 인증된 AES 입력은 문서 리더를 통해 복호화되고 원본 페이지 권한도 여전히 적용됩니다
Ghostscript는 SAFER가 켜진 인자 벡터, 인쇄 기준선, PDF 2.0 출력, 폰트 임베딩, 명시적 이미지 다운샘플링 재정의를 받습니다. 유한한 리소스 순회는 폰트 이름을 16진 PostScript 이름으로 모으고, 구형 Ghostscript를 위한 명시적 AlwaysEmbed 목록을 만듭니다
정규화 프로세스는 /usr/bin/prlimit을 거쳐 실행되며 MaxWorkingBytes의 주소 공간 한도와 MaxOutputBytes의 파일 크기 한도를 받습니다. 출력과 진단에는 바이트 한도가 있고, MaxFontRepairMilliseconds가 경과 처리 시간을 묶습니다
정규화된 페이지는 원본 페이지 수와 추출된 문자 순서를 유지해야 하며, 행과 공백 레이아웃 변화와 추가 평탄화 appearance 텍스트는 허용됩니다. 변환기는 그 페이지들을 sRGB output intent, XMP, 문서 식별자를 갖춘 새 네이티브 PDF/A-4 템플릿으로 임포트합니다
최종 후보는 fsync와 원자적 이름 바꾸기 전에 공식 설정된 veraPDF PDF/A-4 검증을 통과해야 합니다. 백엔드 부재, 바뀐 텍스트, 잘못된 출력, 예산 초과, 타임아웃, 취소는 대상을 그대로 두고 비공개 스테이징 파일을 치웁니다
타임아웃과 취소는 직접 정규화 프로세스를 종료하고 필요하면 kill한 뒤 정리합니다. 서브프로세스 실행 파일은 무관한 자식을 만드는 셸이나 래퍼가 아니라 직접 실행해야 합니다
런타임과 충실도
폰트 복구에는 Ghostscript, 설치된 대체 폰트, util-linux prlimit가 필요합니다. 보존 검증에는 헤드리스 Java 런타임, 공식 veraPDF CLI JAR, 네이티브 sRGB 프로파일 생성을 위한 Little CMS 2가 필요합니다
대체 폰트는 글리프 윤곽과 레이아웃을 바꿀 수 있습니다. 정확한 appearance가 중요하면 쓸 수 있는 원본 폰트가 낫고, 명시적 폰트 복구가 바이트 단위 동일 페이지 리소스나 유지된 서명을 약속하지는 않습니다
서명된 입력에는 AllowSignatureInvalidation true가 필요하고, 소스/출력 별칭은 거부되며, 보이는 주석은 평탄화 전에 쓸 만한 normal appearance가 여전히 필요합니다
독립 검수는 평문, AES R5, AES R6 입력과 회전된 페이지, 실제 임베디드 폰트 프로그램, 검색 가능한 악센트 텍스트, 유지된 벡터 경로, 픽셀 충실도, 진짜 PDF/A-4 검증에 걸쳐 표준 라틴 폰트 페이스 12개와 임베드되지 않은 Arial TrueType 폰트를 커버합니다