PDFium Delphi Component Docs

CharacterMapError lastnost

Component: TPdf  ·  Unit: PDFium
Vrne True, kadar znaka na podanem indeksu ni bilo mogoče preslikati v veljavno kodno točko Unicode. Zastavico za vsak znak sporoča izločevalnik besedila PDFium in klicateljem omogoča prepoznati kodne točke, ki so verjetno napačne, ker izvorna pisava nima uporabnega ToUnicode CMap ali vektorja kodiranja

Syntax

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

IndexZero-based character index on the current page, in the range 0 to CharacterCount - 1.

Description

CharacterMapError vrne True, kadar je PDFium naletel na napako pri preslikavi znaka na podanem indeksu v kodno točko Unicode. Kadar je ta vrednost True, je rezultat, ki ga vrne Character[Index], nezanesljiv in pogosto pade nazaj na nadomestni znak (#$FFFD) ali na neposredni prevod identifikatorja osnovnega glifa.

Zastavica se najpogosteje sproži na datotekah PDF, ki so jih ustvarili gonilniki tiskalnikov in pretvorniška orodja ter vdelajo podmnožice pisav brez ustrezne preslikave ToUnicode CMap ali s preslikavo, ki ne pokriva celotne množice glifov. Optično prebrani PDF-i z vdelanim besedilom OCR in PDF-i z lastnimi vektorji kodiranja so tipični viri napak preslikav.

Klicatelji, ki morajo besedilo iz PDF-a povrniti v drugo obliko, bi morali zadetke CharacterMapError filtrirati ali označiti, preden jih obravnavajo kot vsebino, ki jo je mogoče iskati. Kopica zaporednih napak preslikav običajno kaže na celoten niz znakov, ki ga je treba znova izločiti z OCR in ne prek plasti besedila.

Remarks

Example

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;

See Also

Character, Charcode, CharacterGenerated, CharacterCount, Text