property CharacterCount: Integer; // read only
تُرجع الخاصية CharacterCount عدد المحارف التي يحددها PDFium على
FPDF_TEXTPAGE للصفحة النشطة — وهي الفهرسة نفسها التي تقود
Character[Index] و CharacterRectangle[Index]
و CharacterOrigin[Index] وطبقة البحث / التحديد. ويعكس العدد
الرموز بعد حل خرائط ToUnicode CMap، بحيث يقابل كل مدخل
نقطة ترميز Unicode واحدة كما فكها PDFium، لا رمز خط PDF واحدًا.
تكون القيمة 0 عندما تكون Active تساوي False، أو عندما
تخلو الصفحة من محتوى نصي (صفحات صور / متجهات بحتة)، أو عندما يُرسم المحتوى النصي
بخطوط تفتقر إلى ToUnicode CMap ولم تنجح أي تقديرات بديلة في
فك ترميزها. كما يضم PDFium محارف مسافة “مولَّدة” يصنعها
لنمذجة فواصل الأسطر وحدود الكلمات — افحص
CharacterGenerated[Index] للتمييز بين الرموز الحقيقية والمصطنعة.
الحلقة المعتادة هي for I := 0 to Pdf.CharacterCount - 1 do، حيث تُرجع
Pdf.Character[I] WideChar واحدًا. ودمج هذه المحارف
في نص واحد يعطي محتوى الصفحة النصي بترتيب القراءة
أما CharacterCount نفسها فتعمل بـ O(1) بعد تحليل الصفحة؛ ومُوصِلات الوصول المفهرسة هي من تقوم بالعمل
لكل محرف.
CharacterMapError[Index] لكشف الرموز التي عجز PDFium عن
ربطها بـ Unicode؛ وتتطلب تلك الرموز عادة OCR أو فحص برنامج الخط.
var S: string;
var I: Integer;
SetLength(S, Pdf1.CharacterCount);
for I := 1 to Length(S) do
S[I] := Pdf1.Character[I - 1];
Memo1.Lines.Add(S);