Text
Text
Ta strona opisuje odczytywanie tekstu z dokumentu na trzech poziomach szczegółowości: tekst zwykły, strukturalne bloki układu oraz pojedyncze, pozycjonowane glify. Aby zapisać tekst na stronie, zobacz Core API and Core API.
Wyodrębnianie tekstu zwykłego
Page.GetText() zwraca złożony tekst zwykły strony, w kolejności czytania. Jest to najprostszy sposób, aby potwierdzić, jaki tekst faktycznie znajduje się na stronie — na przykład po spłaszczeniu pola lub zastosowaniu redakcji.
const page = doc.Pages[0];
console.log(page.GetText().includes('Internal memo'));Tekst strukturalny
Page.GetStructuredText() wyodrębnia pozycjonowany tekst pogrupowany w linie (według linii bazowej) oraz bloki przypominające paragrafy (według pionowej przerwy i wyrównania do lewej krawędzi), zwracając TextBlock[] — przydatne, gdy potrzebny jest układ, a nie tylko płaski ciąg znaków.
Introspekcja na poziomie glifów
visitContent(doc, page, visitor) przegląda strumienie zawartości strony — w tym w Form XObjects — i wywołuje odpowiedni handler na visitor dla każdego napotkanego glifu, obrazu lub ścieżki. Handler glyph otrzymuje GlyphEvent: text glifu, jego quad w przestrzeni urządzenia, fontSize, color oraz pola pochodzenia takie jak mcid (jego otaczający element oznaczonej treści, jeśli istnieje) i artifact (prawda, gdy rysowany jest wewnątrz zakresu /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);Wskazówki i najlepsze praktyki
- Użyj
Page.GetText()do szybkiego sprawdzenia obecności/nieobecności; użyjvisitContent()z handleremglyph, gdy potrzebujesz dokładnej pozycji, rozmiaru czcionki lub koloru każdego glifu. - Sprawdź
GlyphEvent.artifact, aby pominąć zawartość dekoracyjną (meble strony, tła), którą dokument oznaczony znacznikami oznacza jako/Artifactzamiast rzeczywistej treści. GlyphEvent.mcidłączy glif z jego otaczającym elementem struktury, gdy dokument jest otagowany — połącz z Structure aby przejść od glifu do jego logicznego elementu.Page.GetStructuredText()grupuje glify w bloki za Ciebie; sięgnij povisitContent()bezpośrednio tylko wtedy, gdy potrzebujesz szczegółów per-glif, którychGetStructuredText()nie udostępnia.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
Page.GetText() brakuje tekstu, który jest widoczny na stronie | Tekst został narysowany jako ścieżki wektorowe lub obraz, zamiast rzeczywistych operatorów wyświetlania glifów | Użyj visitContent() z obsługą path / image, aby potwierdzić, jaki typ treści faktycznie go narysował |
Obsługa glyph w visitContent() uruchamia się dla dekoracyjnego tekstu tła | GlyphEvent.artifact nie został sprawdzony | Pomiń zdarzenia, w których e.artifact jest true |
| Wyodrębniony tekst jest poza wizualną kolejnością czytania | Proste składanie GetText() nie odtwarza układu wielokolumnowego | Użyj Page.GetStructuredText(), który grupuje tekst w bloki uwzględniające układ |
FAQ
Jaka jest różnica między GetText a GetStructuredText?
GetText() zwraca jeden płaski ciąg złożonego tekstu strony. GetStructuredText() zwraca TextBlock[] — tekst pogrupowany w linie i bloki przypominające akapity według linii bazowej i układu, przydatny, gdy ma znaczenie pozycja.
Jak uzyskać dokładną pozycję i rozmiar czcionki każdego znaku?
Wywołaj visitContent(doc, page, { glyph: (e) => ... }). Każdy GlyphEvent zawiera text glifu, quad w przestrzeni urządzenia, fontSize, color i angle linii bazowej.
Czy mogę określić, czy fragment tekstu jest prawdziwą treścią czy dekoracją?
Tak — GlyphEvent.artifact jest true, gdy glif został narysowany wewnątrz zakresu oznaczonej treści /Artifact, taką samą rozróżnialność stosuje Document.AutoTag() przy decydowaniu, co oznaczyć.
Czy ekstrakcja tekstu widzi zawartość wewnątrz Form XObjects?
Tak — visitContent() wchodzi do Form XObjects w ramach swojego przeglądania, więc glify narysowane przy użyciu ponownie używanego formularza są nadal odwiedzane.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Page.GetText() | Złożony tekst zwykły strony, w kolejności czytania |
Page.GetStructuredText() | Tekst pogrupowany w linie i bloki przypominające akapity (TextBlock[]) |
visitContent() | Przejdź po zawartości strony, emitując zdarzenia glifów/obrazów/ścieżek wraz z pochodzeniem |
GlyphEvent | Jeden pozycjonowany glif: text, quad, fontSize, color, mcid, artifact |