PDFium Delphi Component Docs

FPdfContentNormalize 유닛

유닛: FPdfContentNormalize
하나의 논리 PDF 페이지 콘텐츠 시퀀스를 구문을 보존하며 정규화하고 인라인 이미지 경계를 안정적으로 탐지합니다

Syntax

const
  PdfContentNormalizeDefaultInputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultOutputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultTokenLimit = 10000000;

function NormalizePdfContentSequence(const Streams: array of TBytes;
  const Options: TPdfContentNormalizeOptions; out Output: TBytes;
  out Report: TPdfContentNormalizeReport): Boolean;

function CollectPdfContentResourceUses(const Data: TBytes;
  out Uses: TPdfContentResourceUses;
  out ErrorText: string): Boolean;

function FindInlineImageBlock(const Data: TBytes; StartPos: Integer;
  out BiPos, IdPos, DataStart, EndImageStart: Integer): Boolean;

Description

NormalizePdfContentSequence는 전달된 콘텐츠 스트림을 배열 순서대로 이어 붙인 뒤 그 결과를 하나의 논리 페이지 콘텐츠 시퀀스로 토큰화합니다

토큰 분리를 정규화하는 동안 리터럴 문자열, 16진 문자열, 이름, 배열, 사전, 인라인 이미지 페이로드, 알 수 없는 연산자를 보존합니다. 주석은 제거할 수 있고 구조 균형을 요구할 수도 있습니다

CollectPdfContentResourceUses는 중앙 토큰 예산 아래에서 텍스트, XObject, 그래픽 상태, 색 공간, 패턴, 셰이딩, marked-content 속성, 인라인 이미지 연산자가 소비하는 리소스 이름을 기록합니다

FindInlineImageBlock은 이미지 페이로드 데이터 안의 EI 바이트 시퀀스를 종결자로 취급하지 않으면서 완전한 BI, ID, EI 블록을 찾아냅니다

Constants

ConstantDescription
PdfContentNormalizeDefaultInputLimit페이지당 논리 입력 기본 한도 256 MiB
PdfContentNormalizeDefaultOutputLimit페이지당 정규화 출력 기본 한도 256 MiB
PdfContentNormalizeDefaultTokenLimit페이지당 토큰 기본 한도 10000000개

Functions

FunctionDescription
TPdfContentNormalizeOptions.Default주석 제거, 균형 검증, 이득이 있을 때의 Flate 압축, 안전하지 않은 페이지 건너뛰기를 켜고, 서명된 재작성은 금지하며 세 가지 기본 한도를 적용합니다
NormalizePdfContentSequence정규화된 바이트와 상세 보고서를 반환하거나, 실패 상태와 진단 텍스트와 함께 False를 반환합니다
CollectPdfContentResourceUses리소스를 소비하는 콘텐츠 연산자마다 리소스 종류와 디코딩된 PDF 이름을 반환하거나, 잘못되었거나 예산을 넘은 입력에 대해 진단 텍스트와 함께 False를 반환합니다
FindInlineImageBlockStartPos 이후의 완전한 인라인 이미지 블록 오프셋을 반환합니다

Types

TypeDescription
TPdfContentNormalizeStatus시퀀스 및 문서 정규화의 결과 또는 실패 범주입니다
TPdfContentNormalizeOptions정규화 정책과 페이지당 바이트·토큰 한도입니다
TPdfContentNormalizeReport상태, 바이트·페이지 합계, 스트림·토큰 지표, 구문 관찰, 진단 텍스트입니다
TPdfContentResourceKind리소스 값 pcrkFont, pcrkXObject, pcrkExtGState, pcrkColorSpace, pcrkPattern, pcrkShading, pcrkProperties
TPdfContentResourceUse디코딩된 리소스 Name과 그 Kind의 짝입니다
TPdfContentResourceUses콘텐츠 순서대로 수집된 리소스 사용의 동적 배열입니다

Status values

ValueMeaning
pcnsNotStarted보고서는 초기화되었지만 정규화가 완료되지 않았습니다
pcnsCompleted정규화가 성공적으로 완료되었습니다
pcnsInputLimitExceeded논리 입력이 MaxInputBytesPerPage를 넘었거나 구성된 한도가 양수가 아니었습니다
pcnsOutputLimitExceeded정규화된 바이트가 MaxOutputBytesPerPage를 넘게 됩니다
pcnsTokenLimitExceeded콘텐츠 시퀀스가 MaxTokensPerPage를 넘었습니다
pcnsMalformedTokenPDF 콘텐츠 토큰을 온전히 읽을 수 없었습니다
pcnsUnresolvedInlineImage완전한 인라인 이미지 페이로드 경계를 찾을 수 없었습니다
pcnsUnbalancedState요구된 그래픽, 텍스트, marked-content, 호환성, 배열, 사전 범위 균형 검사가 실패했습니다
pcnsUnsupportedFilter문서 수준 정규화가 디코딩할 수 없는 콘텐츠 스트림 filter를 만났습니다
pcnsEncryptedDocument문서 수준 정규화가 암호화된 입력을 거부했습니다
pcnsSignedDocument문서 수준 정규화가 승인 없이 서명된 입력을 거부했습니다
pcnsDocumentRewriteFailed감싸는 PDF 객체 그래프 재작성이나 검증이 실패했습니다
pcnsResourceBudgetExceeded정규화가 끝나기 전에 프로세스 전체 TPdfParserResourceBudget 기한에 도달했습니다

Options

FieldDescription
RemoveComments필요한 토큰 경계는 유지하면서 PDF 주석을 생략합니다
RequireBalancedStateq/Q, BT/ET, marked-content, 호환성, 배열, 사전 범위의 균형을 요구합니다
CompressOutput압축이 크기를 줄일 때 문서 수준 래퍼가 정규화된 페이지 스트림을 Flate로 압축하도록 허용합니다
SkipUnsafePages문서 재작성을 중단하는 대신, 안전하지 않거나 지원되지 않는 결과가 나온 페이지를 문서 수준 정규화가 그대로 보존하도록 허용합니다
AllowSignedDocument서명된 입력의 전면 재작성을 명시적으로 허용하며, 이는 기존 서명 바이트 범위를 무효화합니다
MaxInputBytesPerPage한 페이지에 전달되는 콘텐츠 스트림의 총 바이트 최대값입니다
MaxOutputBytesPerPage정규화된 콘텐츠 시퀀스에 허용되는 최대 바이트 수입니다
MaxTokensPerPage한 페이지에서 검사하는 토큰의 최대 개수입니다

Report fields

FieldDescription
Status현재 TPdfContentNormalizeStatus
SourceByteCount소스 콘텐츠 바이트 총합
OutputByteCount정규화 또는 재작성된 출력 바이트 총합
PageCount문서 수준 정규화가 검사한 페이지 수
NormalizedPageCount정규화된 콘텐츠로 성공적으로 교체된 페이지 수
SkippedPageCount건너뛰기 정책에 따라 그대로 보존된 안전하지 않은 페이지 수
InputStreamCount논리 페이지 시퀀스로 합쳐진 소스 콘텐츠 스트림 수
OutputStreamCount만들어진 정규화된 콘텐츠 스트림 수
CoalescedArrayCount하나의 정규화된 스트림으로 교체된 다중 스트림 /Contents 배열 수
TokenCount처리된 토큰 수
CommentCount유지되었든 제거되었든 만난 주석 수
InlineImageCount보존된 완전한 인라인 이미지 블록 수
UnknownOperatorCount그대로 보존된 인식 불가 연산자 수
ErrorMessage첫 실패에 대한 진단 텍스트

Inline-image offsets

See Also

FPdfCompress, TPdf.SaveAsNormalizedContent