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

Дивіться також

 Українська