PDFium Delphi Component Docs

מאפיין CharacterMapError

Component: TPdf  ·  Unit: PDFium
מחזיר True כאשר את התו באינדקס שצוין לא ניתן היה למפות לנקודת קוד Unicode תקפה. הדגל מדווח לכל תו על ידי מחלץ הטקסט של PDFium ומאפשר לקוראים לזהות נקודות קוד שכנראה שגויות משום שהגופן המקורי חסר CMap של ToUnicode שמיש או וקטור קידוד

Syntax

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

Indexאינדקס תו מבוסס-אפס בעמוד הנוכחי, בטווח 0 עד CharacterCount - 1.

Description

CharacterMapError מחזיר True כאשר PDFium נתקל בשגיאה במיפוי התו באינדקס שצוין לנקודת קוד Unicode. כאשר הדגל הוא True, הערך שמחזיר Character[Index] אינו אמין ולרוב נופל בחזרה לתו החלפה (#$FFFD) או להעברה ישירה של מזהה ה-glyph שבבסיס.

הדגל מועלה לרוב ב-PDFs שנוצרו על ידי מנהלי הדפסה וכלי המרה שמטמיעים תתי-קבוצות גופנים ללא CMap של ToUnicode מתאים, או עם CMap שאינו מכסה את מלוא קבוצת ה-glyphs. PDFs סרוקים עם טקסט OCR מוטמע ו-PDFs שמשתמשים בווקטורי קידוד מותאמים הם מקורות טיפוסיים לשגיאות מיפוי.

קוראים שצריכים להעביר טקסט מ-PDF בכיוון השני (round-trip) צריכים לסנן או לסמן פגיעות CharacterMapError לפני שהם מתייחסים אליהן כתוכן הניתן לחיפוש. אשכול של שגיאות מיפוי רצופות מצביע בדרך כלל על רצף מחרוזת שלם שיש לחלץ מחדש באמצעות OCR ולא דרך שכבת הטקסט.

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