PDFium Component Docs

CharacterGenerated Właściwość

Ten wpis API zachowuje identyfikatory, sygnatury, bloki kodu i terminy PDF w oryginalnej postaci.
Komponent: TPdf  ·  Moduł: PDFium
Zwraca True, gdy znak pod wskazanym indeksem został utworzony syntetycznie przez PDFium podczas ekstrakcji tekstu, a nie został narysowany jawnie przez strumień zawartości strony Znaki syntetyczne pojawiają się przy rozwijaniu ligatur, miękkim dzieleniu wyrazów i heurystykach granic wyrazów lub linii, aby wyniki wyszukiwania i zaznaczania całości czytały się naturalnie

Składnia

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

IndexIndeks znaku liczony od zera na bieżącej stronie, w zakresie od 0 do CharacterCount - 1

Opis

CharacterGenerated zwraca True, gdy znak pod wskazanym indeksem został wygenerowany wewnętrznie przez PDFium, a nie był obecny w oryginalnym strumieniu zawartości Typowe przykłady to dekompozycja ligatur (rozbicie glifu ligatury fi na f + i), końcowy odstęp, który PDFium wstawia między sąsiadującymi przebiegami tekstu rozdzielonymi wizualnie, oraz znaki podziału wiersza wstawiane na końcu każdej wizualnej linii

Znaki wygenerowane nie mają własnego rysunku w strumieniu zawartości strony, więc ich pola ograniczające są wyprowadzane z sąsiednich glifów Zachowaj ostrożność przy ich położeniu na stronie, jeśli potrzebujesz precyzyjnego testu trafienia w pikselach; ich CharacterRectangle może zapaść się do obszaru o zerowej szerokości lub wysokości

W zadaniach takich jak dokładna ekstrakcja dosłowna (podpisy cyfrowe, porównania hashowania tekstu, archiwizacja prawna) najpierw odfiltruj znaki wygenerowane Przy zwykłym wyszukiwaniu tekstu i kopiowaniu do schowka flaga ma znaczenie wyłącznie informacyjne — PDFium już wstawił te znaki, ponieważ użytkownicy ich oczekują

Uwagi

Przykład

// Buduje dosłowny ciąg zawierający tylko znaki ze strumienia zawartości
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;

Zobacz też

Character, CharacterIsHyphen, CharacterMapError, CharacterRectangle, Text