PDFium Component Docs

CharacterGenerated vlastnosť

Component: TPdf  ·  Unit: PDFium
Vráti True, keď znak na zadanom indexe PDFium počas extrakcie textu syntetizovalo namiesto toho, aby bol vykreslený priamo obsahovým streamom strany. Syntetické znaky sa vytvárajú pri rozklade ligatúr, mäkkom delený slov a heuristikách hraníc slov alebo riadkov, aby výsledky vyhľadávania a výberu celého textu zneli prirodzene

Syntax

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

IndexIndex znaku so základom 0 na aktuálnej strane, v rozsahu 0 až CharacterCount - 1.

Description

CharacterGenerated vráti True, keď znak na zadanom indexe bol vygenerovaný interne PDFiom namiesto toho, aby bol prítomný v pôvodnom streame obsahu. Typické príklady sú: rozklad ligatúry (rozdelenie glyfu ligatúry fi na f + i), koncová medzera, ktorú PDFium vkladá medzi susedné textové behy, ktoré sú vizuálne oddelené, a znaky konca riadku vkladané na konci každého vizuálneho riadku.

Vygenerované znaky nemajú vlastné kreslenie v streame obsahu strany, takže ich ohraničujúce obdĺžniky sa odvodzujú zo susedných glyfov. S ich pozíciou na strane zaobchádzajte opatrne, ak potrebujete pixelovo presný hit-testing; ich CharacterRectangle sa môže zrútiť na oblasť nulovej šírky alebo výšky.

Pre úlohy ako extrakcia doslovného textu (digitálne podpisy, pracovné toky hash-textu, ASCII-pravdivé porovnanie so streamom obsahu strany) najprv vyfiltrujte vygenerované znaky. Pre bežné vyhľadávanie textu a kopírovanie do schránky je príznak čisto informatívny — PDFium už znaky vložilo, pretože používatelia ich očakávajú.

Remarks

Example

// Build a verbatim string that contains only characters from the content stream
var
  I: Integer;
  S: WString;
begin
  S := '';
  for I := 0 to Pdf.CharacterCount - 1 do
    if not Pdf.CharacterGenerated[I] then
      S := S + Pdf.Character[I];
  Memo1.Text := S;
end;

See Also

Character, CharacterIsHyphen, CharacterMapError, CharacterRectangle, Text