PDFium Component Docs

CharacterMapError 속성

이 API 항목은 식별자, 시그니처, 코드 블록, PDF 용어를 원래 형태로 유지합니다.
컴포넌트: TPdf  ·  유닛: PDFium
지정한 인덱스의 character를 유효한 Unicode code point로 매핑할 수 없을 때 True를 반환합니다. 이 flag는 PDFium text extractor가 character별로 보고하며, 원본 font에 사용할 만한 ToUnicode CMap 또는 encoding vector가 없어 code point가 틀렸을 가능성을 caller가 식별하게 해줍니다

구문

property CharacterMapError[Index: Integer]: Boolean; // read only

Index현재 page의 0 기반 character index입니다. 범위는 0 .. CharacterCount - 1입니다

설명

CharacterMapError는 PDFium이 지정한 인덱스의 character를 Unicode code point로 매핑하는 동안 오류를 만났을 때 True를 반환합니다. 이 값이 True이면 Character[Index]가 돌려주는 값은 신뢰할 수 없으며, 보통 대체 character(#$FFFD)로 떨어지거나 기반 glyph identifier를 그대로 통과시킵니다

이 flag는 보통 대응하는 ToUnicode CMap이 없거나 전체 glyph set을 덮지 않는 CMap과 함께 font subset을 포함한 PDF를 만든 printer driver나 conversion tool에서 가장 자주 나타납니다. embedded OCR text가 있는 scanned PDF와 custom encoding vector를 쓰는 PDF도 일반적인 map error 원인입니다

PDF의 text를 round-trip해야 하는 caller는 검색 가능한 content로 취급하기 전에 CharacterMapError hit를 걸러내거나 주석을 달아야 합니다. 연속된 map error 묶음은 보통 text layer가 아니라 OCR로 다시 추출해야 할 전체 string run을 뜻합니다

비고

예제

var
  I, BadCount: Integer;
begin
  BadCount := 0;
  for I := 0 to Pdf.CharacterCount - 1 do
    if Pdf.CharacterMapError[I] then
    begin
      Memo1.Lines.Add(Format('Map error at %d (charcode $%x)',
        [I, Pdf.Charcode[I]]));
      Inc(BadCount);
    end;
  Caption := Format('%d untranslatable characters on page', [BadCount]);
end;

참고 항목

Character, Charcode, CharacterGenerated, CharacterCount, Text