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 TextFragmentAbsorber når du trenger posisjons- og skriftdata; bruk TextAbsorber for ren tekstuttrekk.
  • Godta absorberen på en enkelt side for raskere resultater, eller på doc.Pages for å 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.IsEmbedded for å avgjøre om en skrift er innebygd i PDF‑en.
  • For store dokumenter, behandle sider én om gangen for å håndtere minnebruk.

Vanlige problemer

IssueCauseFix
Utdraget tekst er ødelagtPDF bruker en ikke‑standard kodning eller CID‑skriftkartleggingSjekk skriftembedding; noen skannede PDF‑er krever OCR
Ingen tekstfragmenter funnetSideinnholdet er et bilde, ikke tekstBruk et OCR‑verktøy for å konvertere bildesider til tekst først
Regex gir ingen treffMønsteret tar ikke hensyn til mellomrom som settes inn av PDF‑tekstlayoutNormaliser mellomrom eller bruk et løsere mønster
TextState.Font er nullSkriftressurs mangler i PDF‑enHå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 / MetodeBeskrivelse
TextAbsorberEkstraherer all tekst som en enkelt streng
TextFragmentAbsorberEkstraherer strukturerte tekstfragmenter med posisjon- og skriftdata
TextFragmentEt tekstløp med posisjon, teksttilstand og segmenter
TextFragment.TextDen ekstraherte tekststrengen
TextFragment.PositionKoordinater på siden
TextFragment.TextStateSkrift, størrelse og fargeinformasjon
TextFragment.SegmentsUnderløp innen fragmentet
TextParagraphBygger for flerradige tekstblokker
TextStateSkriftnavn, størrelse, farge og stilegenskaper
FontRepositoryStatisk oppslag og lasting av skrifttyper
FontRepository.FindFontFinn en skrifttype etter navn

Se også

 Norsk