Text
Text
هذه الصفحة تغطي قراءة النص مرة أخرى من الصفحة، على ثلاثة مستويات من التفصيل: النص العادي، كتل التخطيط المُنظمة، والرموز الفردية ذات المواقع المحددة. لكتابة النص على الصفحة، انظر Core API and Core API.
استخراج النص العادي
Page.GetText() تُرجِع النص العادي المجمع للصفحة، بترتيب القراءة. إنها أبسط طريقة لتأكيد ما يحتويه النص فعليًا في الصفحة — على سبيل المثال، بعد تسطيح حقل أو تطبيق تعديل.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));نص منظم
Page.GetStructuredText() يستخرج النص المموضع المجمع في أسطر (حسب الخط الأساسي) وكتل تشبه الفقرات (حسب الفجوة العمودية ومحاذاة الحافة اليسرى)، ويرجع TextBlock[] — وهو مفيد عندما تحتاج إلى التخطيط، وليس مجرد سلسلة مسطحة.
تحليل على مستوى الحرف
visitContent(doc, page, visitor) يتجول في تدفقات محتوى الصفحة — بما في ذلك داخل Form XObjects — ويستدعي المعالج المطابق على visitor لكل حرف، صورة، أو مسار يصادفه. يتلقى معالج glyph GlyphEvent: text للحرف، quad في مساحة الجهاز، fontSize، color، وحقول الأصل مثل mcid (عنصر المحتوى المميز المحيط به، إن وجد) وartifact (صحيح عندما يتم الرسم داخل نطاق /Artifact).
import { visitContent } from '@asposefoss/pdf';
let glyphCount = 0;
visitContent(doc, page, {
glyph: (e) => {
glyphCount++;
if (e.artifact) return; // skip decorative content
console.log(e.text, e.quad, e.color);
},
});
console.log('glyphs drawn:', glyphCount);نصائح وأفضل الممارسات
- استخدم
Page.GetText()لإجراء فحص سريع للوجود/الغياب؛ استخدمvisitContent()مع معالجglyphعندما تحتاج إلى الموضع الدقيق لكل حرف، أو حجم الخط، أو اللون. - تحقق من
GlyphEvent.artifactلتخطي المحتوى الزخرفي (أثاث الصفحة، الخلفيات) الذي يحددها المستند الموسوم كـ/Artifactبدلاً من المحتوى الحقيقي. GlyphEvent.mcidيربط glyph بالعنصر الهيكلي الذي يحيطه عندما يتم وضع وسوم على المستند — دمجه مع Structure للتنقل من glyph إلى العنصر المنطقي الخاص به.Page.GetStructuredText()يجمع الأحرف في كتل لك؛ استخدمvisitContent()مباشرةً فقط عندما تحتاج إلى تفاصيل لكل حرف لا يوضحهاGetStructuredText().
مشكلات شائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
Page.GetText() يفتقد نصًا مرئيًا على الصفحة | تم رسم النص كمسارات متجهة أو كصورة بدلاً من مشغلات glyph-show الحقيقية | استخدم visitContent() مع معالج path / image لتأكيد نوع المحتوى الذي رسمه فعليًا |
معالج glyph الخاص بـ visitContent() يُفعل للنص الخلفي الزخرفي | لم يتم فحص GlyphEvent.artifact | تجاوز الأحداث التي يكون فيها e.artifact هو true |
| النص المستخرج خارج ترتيب القراءة البصري | تجميع GetText() العادي لا يعيد بناء تخطيط متعدد الأعمدة | استخدم Page.GetStructuredText()، الذي يجمع النص في كتل واعية للتخطيط |
FAQ
ما الفرق بين GetText و GetStructuredText؟
GetText() تُعيد سلسلة مسطحة واحدة من النص المركب للصفحة. GetStructuredText() تُعيد TextBlock[] — نصًا مُجمّعًا في أسطر وكتل شبيهة بالفقرات حسب الخط الأساسي والتخطيط، وهو مفيد عندما تكون الموضع مهمة.
كيف أحصل على الموضع الدقيق وحجم الخط لكل حرف؟
استدعِ visitContent(doc, page, { glyph: (e) => ... }). كل GlyphEvent يحمل text للرمز، quad في مساحة الجهاز، fontSize، color، وخط الأساس angle.
هل يمكنني معرفة ما إذا كان جزء من النص محتوىً حقيقيًا أم زخرفة؟
نعم — GlyphEvent.artifact هو true عندما يُرسم الرمز داخل نطاق محتوى مُعلَّم /Artifact، وهو نفس التمييز الذي يستخدمه Document.AutoTag() عند اتخاذ قرار ما يجب وضع علامة عليه.
هل يرى استخراج النص المحتوى داخل Form XObjects؟
نعم — visitContent() يدخل إلى Form XObjects كجزء من عملية استعراضه، لذا لا تزال الرموز المرسومة عبر نموذج مُعاد الاستخدام تُستكشف.
ملخص API Reference
| الفئة/الطريقة | وصف |
|---|---|
Page.GetText() | النص العادي المجمع للصفحة، بترتيب القراءة |
Page.GetStructuredText() | نص مُجمّع في أسطر وكتل شبيهة بالفقرات (TextBlock[]) |
visitContent() | استعراض محتوى الصفحة، وإصدار أحداث الرمز/الصورة/المسار مع الأصل |
GlyphEvent | رمز موضع واحد: text, quad, fontSize, color, mcid, artifact |