Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Bij het werken met documenten is het belangrijk om gemakkelijk inhoud te kunnen extraheren uit een specifiek bereik binnen een document. De inhoud kan echter bestaan uit complexe elementen zoals alinea ' s, tabellen, afbeeldingen, enz.
Ongeacht welke inhoud moet worden geëxtraheerd, de methode om die inhoud te extraheren wordt altijd bepaald door welke knooppunten worden geselecteerd om inhoud tussen te extraheren. Dit kunnen hele tekstlichamen of eenvoudige tekstlopen zijn.
Er zijn veel mogelijke situaties en daarom veel verschillende knooptypen om te overwegen bij het extraheren van inhoud. U wilt bijvoorbeeld inhoud extraheren tussen:
In sommige situaties moet u mogelijk zelfs verschillende knooptypen combineren, zoals het extraheren van inhoud tussen een alinea en een veld of tussen een run en een bladwijzer.
Dit artikel bevat de code-implementatie voor het extraheren van tekst tussen verschillende knooppunten, evenals voorbeelden van veel voorkomende scenario ' s.
Vaak is het doel van het extraheren van de inhoud om deze afzonderlijk te dupliceren of op te slaan in een nieuw document. U kunt bijvoorbeeld inhoud uitpakken en:
Dit kan eenvoudig worden bereikt met behulp van Aspose.Words en de onderstaande code-implementatie.
De code in deze sectie behandelt alle mogelijke situaties die hierboven zijn beschreven met één gegeneraliseerde en herbruikbare methode. De algemene opzet van deze techniek omvat::
Om de inhoud uit uw document te halen, moet u de onderstaande methode ExtractContent aanroepen en de juiste parameters doorgeven. De onderliggende basis van deze methode bestaat uit het vinden van knooppunten op blokniveau (alinea ' s en tabellen) en het klonen ervan om identieke kopieën te maken. Als de doorgegeven markerknooppunten blokniveau zijn, kan de methode de inhoud op dat niveau eenvoudig kopiëren en aan de array toevoegen.
Als de markerknooppunten echter inline zijn (een kind van een alinea), wordt de situatie complexer, omdat het noodzakelijk is om de alinea bij de inline-knoop te splitsen, of het nu een run is, bladwijzervelden enz. De inhoud van de gekloonde ouderknopen die niet tussen de markers aanwezig is, wordt verwijderd. Dit proces wordt gebruikt om ervoor te zorgen dat de inline knooppunten nog steeds de opmaak van de bovenliggende alinea behouden. De methode zal ook controles uitvoeren op de knooppunten die als parameters worden doorgegeven en een uitzondering maken als een van beide knooppunten ongeldig is. De parameters die aan deze methode moeten worden doorgegeven, zijn::
StartNode en EndNode. De eerste twee parameters zijn de knooppunten die bepalen waar de extractie van de inhoud respectievelijk moet beginnen en eindigen. Deze knooppunten kunnen zowel blokniveau (paragraaf, tabel ) als inline-niveau zijn (bijvoorbeeld Run, FieldStart, BookmarkStart enz.).):
IsInclusive. Bepaalt of de markers zijn opgenomen in de extractie of niet. Als deze optie is ingesteld op false en dezelfde knoop of opeenvolgende knooppunten worden doorgegeven, wordt een lege lijst geretourneerd:
De implementatie van de ExtractContent methode kunt u vinden hier. Deze methode zal worden vermeld in de scenario ' s in dit artikel.
We zullen ook een aangepaste methode definiëren om eenvoudig een document te genereren uit uitgepakte knooppunten. Deze methode wordt in veel van de onderstaande scenario ' s gebruikt en maakt eenvoudig een nieuw document en importeert de geëxtraheerde inhoud erin.
Het volgende codevoorbeeld laat zien hoe u een lijst met knooppunten kunt nemen en deze in een nieuw document invoegt.
Dit toont aan hoe u de bovenstaande methode kunt gebruiken om inhoud tussen specifieke alinea ' s te extraheren. In dit geval willen we de inhoud van de brief uit de eerste helft van het document halen. We kunnen zien dat dit tussen de 7e en 11e alinea ligt.
De onderstaande code vervult deze taak. De juiste alinea ' s worden geëxtraheerd met behulp van de GetChild methode op het document en het passeren van de opgegeven indices. We geven deze knooppunten dan door aan de ExtractContent methode en stellen dat deze in de extractie moeten worden opgenomen. Deze methode retourneert de gekopieerde inhoud tussen deze knooppunten die vervolgens in een nieuw document worden ingevoegd.
Het volgende codevoorbeeld laat zien hoe u de inhoud tussen specifieke alinea ' s kunt extraheren met behulp van de bovenstaande methode ExtractContent:
We kunnen inhoud extraheren tussen combinaties van blokniveau of inline knooppunten. In dit scenario hieronder zullen we de inhoud tussen de eerste alinea en de tabel in de tweede sectie inclusief extraheren. We krijgen de markers knooppunten door het aanroepen van Body.FirstParagraph en GetChild methode op het tweede deel van het document om de juiste paragraaf en tabel knooppunten op te halen. Voor een kleine variatie laten we in plaats daarvan de inhoud dupliceren en deze Onder het origineel invoegen.
Het volgende codevoorbeeld laat zien hoe u de inhoud tussen een alinea en een tabel kunt extraheren met behulp van de methode ExtractContent:
Mogelijk moet u de inhoud extraheren tussen alinea ’s van dezelfde of verschillende stijlen, zoals tussen alinea' s die zijn gemarkeerd met kopstijlen. Onderstaande code laat zien hoe dit te bereiken is. Het is een eenvoudig voorbeeld dat de inhoud tussen de eerste instantie van de stijlen “Heading 1” en “Header 3” extraheert zonder ook de koppen te extraheren. Om dit te doen stellen we de laatste parameter in op false, wat aangeeft dat de markerknooppunten niet moeten worden opgenomen.
In een juiste implementatie moet dit in een lus worden uitgevoerd om inhoud tussen alle alinea ' s van deze stijlen uit het document te extraheren. De uitgepakte inhoud wordt gekopieerd naar een nieuw document.
Het volgende codevoorbeeld laat zien hoe u inhoud tussen alinea ' s met specifieke stijlen kunt extraheren met behulp van de methode ExtractContent:
U kunt ook inhoud extraheren tussen inline knooppunten zoals een Run. Runs uit verschillende paragrafen kunnen als markeringen worden doorgegeven. De onderstaande code laat zien hoe specifieke tekst tussen dezelfde Paragraph-knoop kan worden geëxtraheerd.
Het volgende codevoorbeeld laat zien hoe u inhoud kunt extraheren tussen specifieke runs van dezelfde alinea met behulp van de methode ExtractContent:
Om een veld als marker te gebruiken, moet de FieldStart knoop worden doorgegeven. De laatste parameter van de ExtractContent methode zal bepalen of het hele veld moet worden opgenomen of niet. Laten we de inhoud extraheren tussen het “FullName” samenvoegveld en een alinea in het document. We gebruiken de MoveToMergeField methode van DocumentBuilder klasse. Dit zal het FieldStart knooppunt teruggeven van de naam van het merge veld dat eraan is doorgegeven.
Laten we in ons geval de laatste parameter die aan de methode ExtractContent is doorgegeven, instellen op false om het veld uit te sluiten van de extractie. We zullen de geëxtraheerde inhoud renderen naar PDF.
Het volgende codevoorbeeld toont hoe u inhoud tussen een specifiek veld en alinea in het document kunt extraheren met behulp van de methode ExtractContent:
In een document wordt de inhoud die is gedefinieerd in een bladwijzer ingekapseld door de knooppunten BookmarkStart en BookmarkEnd. De inhoud die tussen deze twee knooppunten wordt gevonden, vormt de bladwijzer. U kunt elk van deze knooppunten als een markering doorgeven, zelfs die van verschillende bladwijzers, zolang de startmarkering vóór de eindmarkering in het document verschijnt. We zullen deze inhoud extraheren in een nieuw document met behulp van de onderstaande code. De optie parameter IsInclusive laat zien hoe u de bladwijzer kunt behouden of weggooien.
Het volgende codevoorbeeld toont hoe u de inhoud waarnaar een bladwijzer wordt verwezen, kunt extraheren met behulp van de methode ExtractContent:
Een opmerking bestaat uit de knooppunten CommentRangeStart, CommentRangeEnd en commentaar. Al deze nodes zijn inline. De eerste twee knooppunten bevatten de inhoud in het document waarnaar in de opmerking wordt verwezen, zoals te zien is in de onderstaande screenshot.
De Comment - knoop zelf is een InlineStory die alinea ' s en runs kan bevatten. Het vertegenwoordigt het bericht van de opmerking als een commentaarbel in het voorbeeldvenster. Omdat deze node inline is en een afstammeling van een lichaam, kun je ook de inhoud uit dit bericht halen.
De opmerking bevat de kop, de eerste alinea en de tabel in de tweede sectie. Laten we deze opmerking uitpakken in een nieuw document. De optie IsInclusive bepaalt of de opmerking zelf wordt bewaard of weggegooid.
Het volgende codevoorbeeld laat zien hoe dit te doen:
Gebruik de klasse DocumentVisitor om dit gebruiksscenario te implementeren. Deze klasse komt overeen met het bekende Bezoekersontwerppatroon. Met DocumentVisitor, kunt u aangepaste bewerkingen definiëren en uitvoeren die moeten worden opgesomd via de documentstructuur.
DocumentVisitor
Elke DocumentVisitor.VisitXXX methode geeft een VisitorAction waarde terug die de opsomming van knooppunten regelt. U kunt vragen om de opsomming voort te zetten, het huidige knooppunt over te slaan (maar de opsomming voort te zetten) of de opsomming van knooppunten te stoppen.
Dit zijn de stappen die u moet volgen om verschillende delen van een document programmatisch te bepalen en te extraheren:
Node.Accept aan op het knooppunt waar u de opsomming wilt starten. Als u bijvoorbeeld het hele document wilt opsommen, gebruikt u Document.AcceptDocumentVisitor
Dit voorbeeld laat zien hoe u het Bezoekerspatroon gebruikt om nieuwe bewerkingen toe te voegen aan het Aspose.Words objectmodel. In dit geval maken we een eenvoudige documentconverter naar een tekstformaat:
De manieren om tekst uit het document op te halen zijn::
Node.GetText en Node.ToStringgebruikenEen Word - document kan besturingstekens bevatten die speciale elementen aanduiden, zoals veld, einde van de cel, einde van sectie, enz. De volledige lijst van mogelijke Word controle tekens is gedefinieerd in de ControlChar Klasse. De methode Node.GetText retourneert tekst met alle besturingstekens die aanwezig zijn in het knooppunt.
Als u ToString aanroept, wordt alleen de platte tekstweergave van het document geretourneerd zonder besturingstekens.
Het volgende codevoorbeeld toont het verschil tussen het oproepen van de GetText en ToString methoden op een knooppunt:
SaveFormat.TextgebruikenDit voorbeeld slaat het document als volgt op::
Het volgende codevoorbeeld laat zien hoe u een document in TXT - indeling opslaat:
Mogelijk moet u documentafbeeldingen extraheren om bepaalde taken uit te voeren. Aspose.Words kunt u dit ook doen.
Het volgende codevoorbeeld laat zien hoe u afbeeldingen uit een document kunt extraheren:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.