|
Preflight Cookbook
이 쿡북은 프리플라이트(preflight) API와 데모를 태스크 중심의 레시피로 그룹화합니다; 정확한 시그니처가 필요한 경우 API 참조를 사용하고, 애플리케이션, 빌드 스크립트 또는 CI 작업을 위한 실 작동 경로가 필요한 경우 이 페이지를 사용하세요
Choose an output format
var
PDF: THotPDF;
begin
PDF := THotPDF.Create(nil);
try
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.txt');
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.json', '', pfJSON);
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.html', '', pfHTML);
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.csv', '', pfCSV);
finally
PDF.Free;
end;
end;
텍스트 출력은 바이트 안정성이 높고 diff 처리가 용이합니다; JSON은 파이프라인 수집에 적합합니다; HTML은 자체 포함 방식이므로 직접 열거나 CI 아티팩트로 저장할 수 있습니다; CSV는 스프레드시트 및 일괄 보고서 워크플로를 위해 안정적인 열을 사용합니다
Validate PDF/VT documents
var
PDF: THotPDF;
Report: AnsiString;
begin
PDF := THotPDF.Create(nil);
try
if not PDF.ValidatePDFVT('Input.pdf', Report) then
WriteLn(string(Report));
finally
PDF.Free;
end;
end;
PDF/VT 보고서는 ISO 16612-2 식별 및 문서 파트 구조에 중점을 봅니다; 요소 텍스트 또는 RDF 특성 형식의 XMP GTS_PDFVTVersion, 수정 날짜 일치, PDF/X 기본 마커, 출력 인텐트, DPartRoot, DPartRootNode, NodeNameList 및 페이지 수준 DPart 범위
Apply a profile
var
PDF: THotPDF;
Report: AnsiString;
begin
PDF := THotPDF.Create(nil);
try
Report := PDF.CreatePreflightReportWithProfile(
'Input.pdf', '', 'project-preflight.ini', pfJSON);
finally
PDF.Free;
end;
end;
프로필은 명명된 검사, 경고 또는 모든 힌트를 숨깁니다; 구식 이름을 암묵적으로 무시하는 것보다 확실히 실패하도록 처리하는 것이 더 중요한 경우, 사용자가 작성한 프로필을 적용하기 전에 ValidatePreflightProfile을 사용하세요
Preset에서 reusable profile 만들기
var
PDF: THotPDF;
Profile: THPDFPreflightProfile;
begin
PDF := THotPDF.Create(nil);
try
Profile := PDF.GetBuiltInPreflightProfile('compact');
Profile.DisableWarnings := 'OpenAction,JavaScript,URIAction';
PDF.SavePreflightProfile(Profile, 'compact-no-actions.ini');
finally
PDF.Free;
end;
end;
프리셋을 프로젝트 고유 이름과 결합하려면 MergePreflightProfiles를 사용하세요; 공유 구성 파일을 업데이트하기 전에 프로필 변경을 검토하려면 DiffPreflightProfiles를 사용하세요
Archive the report with the PDF
PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');
텍스트 포함 경로는 최종 EOF 마커 뒤에 읽을 수 있는 주석 블록을 추가합니다; XMP 경로는 메타데이터 패킷을 검색하는 아카이브 워크플로를 위해 RDF 형식의 페이로드를 추가합니다
Validate an embedded report
var
OriginalReport: AnsiString;
CurrentReport: AnsiString;
begin
if not PDF.LoadAndValidatePreflightReport(
'Input-with-report.pdf', OriginalReport, CurrentReport) then
WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;
검증 경로는 포함된 지문(fingerprint)을 소스 바이트에 대한 신규 프리플라이트 실행과 비교합니다; diff 도우미는 줄 단위로 작동하며 HotPDF 프리플라이트 보고서에 맞게 조정되었습니다
Conservative repair pass 실행
var
RepairsApplied: AnsiString;
begin
if PDF.RepairPDFFromPreflightReport(
'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
WriteLn(string(RepairsApplied));
end;
복구 도우미는 의도적으로 좁은 범위로 유지됩니다; 최종 EOF 마커 뒤의 후행 바이트 및 누락된 EOF 마커는 처리하지만 크로스 레퍼런스(cross-reference) 테이블을 재구축하거나 스트림을 다시 쓰지는 않습니다
Aggregate many reports
Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);
집계 출력은 PDF당 하나의 상태 라인과 처리된 보고서, 실패 및 경고에 대한 합계를 나열합니다; 상세 보고서가 입력 파일별로 유지되더라도 파이프라인에 하나의 요약이 필요한 경우 유용합니다
Command-line tool 사용
HotPDFPreflight Input.pdf -f json -o reports
HotPDFPreflight Input.pdf --pdfvt -o reports
HotPDFPreflight C:\Archive -r --preset compact -f text -o reports --aggregate reports\Aggregate.txt
HotPDFPreflight C:\Archive -r --profile project-preflight.ini -f html -o reports
CLI는 라이브러리 워크플로를 미러링합니다; 단일 파일 또는 재귀적 디렉터리 입력, 텍스트 / JSON / HTML 출력, 선택적 비밀번호, 선택적 프로필, 내장 프리셋, 상세 진행 상황 및 집계 요약
Build a static dashboard
PreflightDashboard C:\Archive C:\Archive\preflight-dashboard
대시보드 데모는 index.html과 파일별 HTML 보고서를 작성합니다; 웹 서버가 필요하지 않으므로 출력을 정적 아티팩트로 게시할 수 있습니다
Adapt to veraPDF-style JSON consumers
Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);
어댑터는 이미 veraPDF와 유사한 JSON을 활용하는 도구를 위해 HotPDF 시맨틱을 유지하면서 실패 내역을 친숙한 검증 결과 구조로 재구성합니다
Related Topics
|