Text
Text
Ця сторінка охоплює читання тексту з сторінки на трьох рівнях деталізації: plain text, structured layout blocks та individual positioned glyphs. Для запису тексту на сторінку дивіться 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пов’язує гліф назад до його охоплюючого елементу структури, коли документ теговано — поєднайте з Structure для переходу від гліфа до його логічного елементу.Page.GetStructuredText()групує гліфи у блоки за вас; використовуйтеvisitContent()безпосередньо лише коли потрібна деталізація по гліфу, якуGetStructuredText()не розкриває.
Типові проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
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 є true, коли гліф був намальований всередині /Artifact області позначеного вмісту, та ж різниця, яку Document.AutoTag() використовує при вирішенні, що тегувати.
Чи бачить видобуток тексту вміст всередині Form XObjects?
Так — visitContent() входить у Form XObjects під час свого обходу, тому гліфи, намальовані через повторно використану форму, все ще відвідуються.
API Reference Підсумок
| Клас/Метод | Опис |
|---|---|
Page.GetText() | Зібраний простий текст сторінки, у порядку читання |
Page.GetStructuredText() | Текст, згрупований у рядки та блоки, схожі на абзаци (TextBlock[]) |
visitContent() | Обійти вміст сторінки, генеруючи події гліфа/зображення/шляху з інформацією про походження |
GlyphEvent | Один позиціонований гліф: text, quad, fontSize, color, mcid, artifact |