Text
Text
این صفحه به خواندن متن از یک صفحه در سه سطح جزئیات میپردازد: متن ساده، بلاکهای چیدمان ساختاری، و گلیفهای موقعیتیافتهٔ فردی. برای نوشتن متن روی صفحه، ببینید هسته API and هسته 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یک گلیف را به عنصر ساختاری محاطکنندهاش لینک میکند وقتی سند برچسبگذاری شده است — ترکیب کنید با Structure برای حرکت از یک گلیف به عنصر منطقی آن.Page.GetStructuredText()گلیفها را برای شما به بلوکها گروهبندی میکند؛ فقط زمانی که به جزئیات هر گلیف نیاز دارید کهGetStructuredText()ارائه نمیدهد، مستقیماً ازvisitContent()استفاده کنید.
مشکلات رایج
| مسئله | دلیل | رفع |
|---|---|---|
Page.GetText() متن از دست رفتهای دارد که بهوضوح روی صفحه نشان داده شده است | متن بهجای استفاده از عملگرهای نمایش گلیف واقعی، بهصورت مسیرهای برداری یا تصویر رسم شد | از 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 زمانی که گلیف داخل یک /Artifact کشیده شده باشد، true است، همان تمایزی که Document.AutoTag() هنگام تصمیمگیری برای برچسبگذاری استفاده میکند.
آیا استخراج متن محتوا داخل Form XObjects را میبیند؟
بله — visitContent() به عنوان بخشی از پیمایش خود وارد Form XObjects میشود، بنابراین گلیفهای کشیدهشده از طریق یک فرم استفاده-مجدد هنوز مورد بازدید قرار میگیرند.
API Reference خلاصه
| کلاس/متد | توضیح |
|---|---|
Page.GetText() | متن سادهٔ سرهمکردهٔ صفحه، به ترتیب خواندن |
Page.GetStructuredText() | متن گروهبندیشده به خطوط و بلوکهای شبیه پاراگراف (TextBlock[]) |
visitContent() | محتویات یک صفحه را پیمایش کنید و رویدادهای قلم/تصویر/مسیر را همراه با منشاء صادر کنید |
GlyphEvent | یک قلم موقعیتیافته: text, quad, fontSize, color, mcid, artifact |