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_PROFILESICCBased 색 공간 또는 출력 의도가 참조하는 ICC 프로필 스트림을 포함합니다
PDF_RESOURCE_DEDUP_FONT_PROGRAMSFontFile, FontFile2 또는 FontFile3을 통해 참조되는 스트림을 포함합니다
PDF_RESOURCE_DEDUP_CMAPSCMap 및 ToUnicode 스트림을 포함합니다
PDF_RESOURCE_DEDUP_TYPE3_CHARPROCSType 3 글리프 프로시저 스트림 포함
PDF_RESOURCE_DEDUP_EMBEDDED_FILES포함 파일 스트림 포함
PDF_RESOURCE_DEDUP_METADATA메타데이터 스트림을 포함합니다
PDF_RESOURCE_DEDUP_POSTSCRIPTPostScript XObject 포함
PDF_RESOURCE_DEDUP_ALL_TYPES12가지 리소스 유형 플래그를 모두 결합합니다

작업 옵션

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