DeduplicateResources
문서 조작, 최적화
설명
불러온 문서 전체에서 바이트 단위로 동일한 간접 리소스 스트림을 찾아 모든 참조를 결정론적 정규 스트림으로 리디렉션하고, 선택적으로 중복 간접 객체를 제거함
동등하려면 완전한 스트림 사전의 순서 독립적 시그니처와 인코딩된 스트림 페이로드가 정확히 일치해야 하므로 이미지 마스크, 색상 공간, 디코딩 배열, 선택적 콘텐츠 연결, 구조 식별자, 메타데이터, 필터 및 모든 의미론적 사전 항목이 판단에 계속 포함됩니다
구문
Delphi
Function TPDFlib.DeduplicateResources(
Options: Integer= PDF_RESOURCE_DEDUP_DEFAULT): Integer; Overload;
Function TPDFlib.DeduplicateResources(Options: Integer;
Out Stats: TPDFlibResourceDedupStats): Integer; Overload;
매개변수
| Options | 리소스 중복 제거 옵션 상수의 비트 조합 |
|---|---|
| Stats | 스캔, 해싱, 비교, 참조, 페이로드, 범주 및 고아 객체 카운터를 받습니다 |
리소스 유형 옵션
| PDF_RESOURCE_DEDUP_IMAGES | 이미지 XObject, 명시적 이미지 마스크, 소프트 마스크 이미지, 대체 이미지 및 썸네일을 포함합니다 |
|---|---|
| PDF_RESOURCE_DEDUP_FORMS | 재사용 가능한 페이지 그래픽, 주석 모양 및 투명도 그룹 같은 Form XObjects를 포함합니다 |
| PDF_RESOURCE_DEDUP_PATTERNS | 스트림 기반 타일링 패턴을 포함합니다 |
| PDF_RESOURCE_DEDUP_SHADINGS | 스트림 기반 메시 셰이딩을 포함합니다 |
| PDF_RESOURCE_DEDUP_FUNCTIONS | 샘플 함수 스트림을 포함합니다 |
| PDF_RESOURCE_DEDUP_ICC_PROFILES | ICCBased 색 공간 또는 출력 의도가 참조하는 ICC 프로필 스트림을 포함합니다 |
| PDF_RESOURCE_DEDUP_FONT_PROGRAMS | FontFile, FontFile2 또는 FontFile3을 통해 참조되는 스트림을 포함합니다 |
| PDF_RESOURCE_DEDUP_CMAPS | CMap 및 ToUnicode 스트림을 포함합니다 |
| PDF_RESOURCE_DEDUP_TYPE3_CHARPROCS | Type 3 글리프 프로시저 스트림 포함 |
| PDF_RESOURCE_DEDUP_EMBEDDED_FILES | 포함 파일 스트림 포함 |
| PDF_RESOURCE_DEDUP_METADATA | 메타데이터 스트림을 포함합니다 |
| PDF_RESOURCE_DEDUP_POSTSCRIPT | PostScript XObject 포함 |
| PDF_RESOURCE_DEDUP_ALL_TYPES | 12가지 리소스 유형 플래그를 모두 결합합니다 |
작업 옵션
| PDF_RESOURCE_DEDUP_DRY_RUN | 객체 그래프를 변경하거나 객체를 수집하지 않고 중복 스트림과 참조를 보고합니다 |
|---|---|
| PDF_RESOURCE_DEDUP_GARBAGE_COLLECT | 참조를 리디렉션한 뒤 표시 후 정리 수집을 실행합니다 |
| PDF_RESOURCE_DEDUP_DEFAULT | 모든 리소스 유형을 가비지 컬렉션과 결합합니다 |
반환 값
| Positive value | 통합되었거나 시험 실행에서 보고된 중복 간접 스트림 수 |
|---|---|
| 0 | 적합한 중복 스트림을 찾지 못했거나 로드된 문서가 없습니다 |
비고
각 정확한 동등성 그룹에서 가장 낮은 개체 번호와 세대가 표준 스트림이 되므로 반복 실행 결과가 결정적입니다
사전 키 순서는 동등성에 영향을 주지 않지만 간접 참조 ID를 포함한 모든 의미론적 키와 값은 영향을 줍니다. 숫자인 최상위 Length 항목은 확인된 값으로 비교하므로 동등한 직접 및 간접 길이 형식이 리소스를 공유할 수 있습니다
디코딩된 콘텐츠는 같지만 필터나 인코딩된 바이트가 다른 리소스는 별도로 유지되며 사전이 서로 다른 중첩 객체를 참조하는 리소스도 마찬가지입니다
모든 후보 페이로드는 SHA-256으로 한 번 해시되며 바이트 단위 확인은 일치하는 해시 및 사전 서명 버킷 안에서만 실행됩니다
ISO 32000에서 스트림을 간접 객체로 요구하고 공유 리소스가 간접 참조로 표현되므로 이 메서드는 간접 스트림을 대상으로 작동함
중복 객체 바이트를 즉시 회수하려면 문서 편집 후 전체 저장 전에 기본값을 사용하십시오
증분 저장에서 이전 리비전을 물리적으로 그대로 유지해야 하면 PDF_RESOURCE_DEDUP_GARBAGE_COLLECT를 생략합니다. 리디렉션된 참조는 새 리비전의 중복을 줄이지만 이전 리비전의 바이트는 제거할 수 없습니다
예제
var
Stats: TPDFlibResourceDedupStats;
Merged: Integer;
begin
Merged:= PDF.DeduplicateResources(
PDF_RESOURCE_DEDUP_DEFAULT, Stats);
PDF.SaveToFile('optimised.pdf');
end;
참고 항목
TPDFlibResourceDedupStats, PurgeUnusedResources, GarbageCollectObjects