Tekstuttrekk
Tekstuttrekk
Aspose.PDF FOSS for .NET tilbyr flere mekanismer for å hente ut tekst fra PDF‑sider. TextFragmentAbsorber er det primære verktøyet — det skanner sideinnholdet og returnerer strukturerte TextFragment‑objekter med posisjon, skrifttype og stilinformasjon.
Grunnleggende tekstuttrekking
TextAbsorber henter ut all tekst fra en side eller dokument som en enkelt streng.
using var doc = Document.Open(pdfBytes);
var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);
string pageText = absorber.Text;Utdrag av tekstfragmenter
TextFragmentAbsorber gir strukturerte resultater. Hver TextFragment inneholder den ekstraherte teksten, dens posisjon på siden og skriftdetaljer.
using var doc = Document.Open(pdfBytes);
var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"Text: {fragment.Text}");
Console.WriteLine($"Position: ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
Console.WriteLine($"Font: {fragment.TextState.Font.FontName}");
}Søke med regulære uttrykk
Send et regex‑mønster til TextFragmentAbsorber for å finne spesifikk tekst.
var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber); // Search all pages
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"Found: {fragment.Text}");
}Tekstsegmenter
Hver TextFragment kan inneholde flere TextSegment-objekter når teksten spenner over forskjellige skriftrunner.
foreach (var fragment in absorber.TextFragments)
{
foreach (var segment in fragment.Segments)
{
Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
}
}Fontadministrasjon
FontRepository gir metoder for å finne og laste inn skrifttyper.
var font = FontRepository.FindFont("Helvetica");Bygge tekstavsnitt
TextParagraph gjør det mulig å konstruere flerradige tekstblokker for innsetting i en side.
var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));Tips og beste praksis
- Bruk
TextFragmentAbsorbernår du trenger posisjons- og skriftdata; brukTextAbsorberfor ren tekstuttrekk. - Godta absorberen på en enkelt side for raskere resultater, eller på
doc.Pagesfor å søke i hele dokumentet. - Regulært uttrykk‑søk er som standard skiller mellom store og små bokstaver — bruk
(?i)prefiks for å matche uten hensyn til store/små bokstaver. - Sjekk
TextState.Font.IsEmbeddedfor å avgjøre om en skrift er innebygd i PDF‑en. - For store dokumenter, behandle sider én om gangen for å håndtere minnebruk.
Vanlige problemer
| Issue | Cause | Fix |
|---|---|---|
| Utdraget tekst er ødelagt | PDF bruker en ikke‑standard kodning eller CID‑skriftkartlegging | Sjekk skriftembedding; noen skannede PDF‑er krever OCR |
| Ingen tekstfragmenter funnet | Sideinnholdet er et bilde, ikke tekst | Bruk et OCR‑verktøy for å konvertere bildesider til tekst først |
| Regex gir ingen treff | Mønsteret tar ikke hensyn til mellomrom som settes inn av PDF‑tekstlayout | Normaliser mellomrom eller bruk et løsere mønster |
TextState.Font er null | Skriftressurs mangler i PDF‑en | Håndter null‑sjekker når du inspiserer skrift‑egenskaper |
FAQ
Kan jeg hente ut tekst fra et spesifikt område på en side?
Ja. Angi TextFragmentAbsorber.TextSearchOptions.Rectangle for å begrense søket til et spesifikt område på siden.
Bevarer tekstuttrekk leserekkefølgen?
Biblioteket returnerer tekst i content-stream-rekkefølge. For multi-column layouts, kan du trenge å sortere fragmenter etter posisjon.
Kan jeg hente ut tekst fra alle sider på én gang?
Ja. Kall doc.Pages.Accept(absorber) for å søke på hver side i dokumentet.
API-referansesammendrag
| Klasse / Metode | Beskrivelse |
|---|---|
TextAbsorber | Ekstraherer all tekst som en enkelt streng |
TextFragmentAbsorber | Ekstraherer strukturerte tekstfragmenter med posisjon- og skriftdata |
TextFragment | Et tekstløp med posisjon, teksttilstand og segmenter |
TextFragment.Text | Den ekstraherte tekststrengen |
TextFragment.Position | Koordinater på siden |
TextFragment.TextState | Skrift, størrelse og fargeinformasjon |
TextFragment.Segments | Underløp innen fragmentet |
TextParagraph | Bygger for flerradige tekstblokker |
TextState | Skriftnavn, størrelse, farge og stilegenskaper |
FontRepository | Statisk oppslag og lasting av skrifttyper |
FontRepository.FindFont | Finn en skrifttype etter navn |