Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Bei der Arbeit mit Dokumenten ist es wichtig, Inhalte aus einem bestimmten Bereich innerhalb eines Dokuments einfach extrahieren zu können. Der Inhalt kann jedoch aus komplexen Elementen wie Absätzen, Tabellen, Bildern usw. bestehen.
Unabhängig davon, welche Inhalte extrahiert werden müssen, wird die Methode zum Extrahieren dieser Inhalte immer davon bestimmt, welche Knoten zum Extrahieren von Inhalten ausgewählt werden. Dabei kann es sich um ganze Textkörper oder einfache Textläufe handeln.
Es gibt viele mögliche Situationen und daher viele verschiedene Knotentypen, die beim Extrahieren von Inhalten berücksichtigt werden müssen. Beispielsweise möchten Sie möglicherweise Inhalte zwischen Folgendem extrahieren:
In einigen Situationen müssen Sie möglicherweise sogar verschiedene Knotentypen kombinieren, z. B. beim Extrahieren von Inhalten zwischen einem Absatz und einem Feld oder zwischen einem Lauf und einem Lesezeichen.
Dieser Artikel stellt die Code-Implementierung zum Extrahieren von Text zwischen verschiedenen Knoten sowie Beispiele für gängige Szenarios bereit.
Das Ziel beim Extrahieren des Inhalts besteht häufig darin, ihn zu duplizieren oder separat in einem neuen Dokument zu speichern. Sie können beispielsweise Inhalte extrahieren und:
Dies kann leicht mit Aspose.Words und der folgenden Code-Implementierung erreicht werden.
Der Code in diesem Abschnitt behandelt alle oben beschriebenen möglichen Situationen mit einer verallgemeinerten und wiederverwendbaren Methode. Der allgemeine Überblick über diese Technik umfasst:
Um den Inhalt aus Ihrem Dokument zu extrahieren, müssen Sie die unten stehende extract_content-Methode aufrufen und die entsprechenden Parameter übergeben. Die zugrunde liegende Grundlage dieser Methode besteht darin, Knoten auf Blockebene (Absätze und Tabellen) zu finden und sie zu klonen, um identische Kopien zu erstellen. Wenn die übergebenen Markierungsknoten auf Blockebene liegen, kann die Methode den Inhalt auf dieser Ebene einfach kopieren und dem Array hinzufügen.
Wenn die Markierungsknoten jedoch inline sind (ein untergeordnetes Element eines Absatzes), wird die Situation komplexer, da der Absatz am Inline-Knoten geteilt werden muss, sei es ein Lauf, Lesezeichenfelder usw. Inhalte in den geklonten übergeordneten Knoten sind nicht vorhanden Der zwischen den Markierungen vorhandene Wert wird entfernt. Dieser Prozess wird verwendet, um sicherzustellen, dass die Inline-Knoten weiterhin die Formatierung des übergeordneten Absatzes beibehalten. Die Methode führt außerdem Prüfungen für die als Parameter übergebenen Knoten durch und löst eine Ausnahme aus, wenn einer der Knoten ungültig ist. Die an diese Methode zu übergebenden Parameter sind:
Die Implementierung der extract_content-Methode finden Sie in Hier. Auf diese Methode wird in den Szenarien in diesem Artikel Bezug genommen.
Wir werden außerdem eine benutzerdefinierte Methode definieren, um auf einfache Weise ein Dokument aus extrahierten Knoten zu generieren. Diese Methode wird in vielen der unten aufgeführten Szenarien verwendet und erstellt einfach ein neues Dokument und importiert den extrahierten Inhalt darin.
Das folgende Codebeispiel zeigt, wie eine Liste von Knoten in ein neues Dokument eingefügt wird:
Dies zeigt, wie Sie mit der oben beschriebenen Methode Inhalte zwischen bestimmten Absätzen extrahieren. In diesem Fall möchten wir den Textkörper des Briefes extrahieren, der sich in der ersten Hälfte des Dokuments befindet. Wir können erkennen, dass dies zwischen dem 7. und 11. Absatz liegt.
Der folgende Code führt diese Aufgabe aus. Die entsprechenden Absätze werden mithilfe der CompositeNode.get_child-Methode aus dem Dokument extrahiert und die angegebenen Indizes übergeben. Anschließend übergeben wir diese Knoten an die extract_content-Methode und geben an, dass diese in die Extraktion einbezogen werden sollen. Diese Methode gibt den kopierten Inhalt zwischen diesen Knoten zurück, der dann in ein neues Dokument eingefügt wird.
Das folgende Codebeispiel zeigt, wie Sie den Inhalt zwischen bestimmten Absätzen mithilfe der oben genannten extract_content-Methode extrahieren:
Wir können Inhalte zwischen beliebigen Kombinationen von Blockebenen- oder Inline-Knoten extrahieren. In diesem Szenario unten extrahieren wir den Inhalt zwischen dem ersten Absatz und der Tabelle im zweiten Abschnitt einschließlich. Wir erhalten die Markierungsknoten, indem wir die Body.first_paragraph- und CompositeNode.get_child-Methode im zweiten Abschnitt des Dokuments aufrufen, um die entsprechenden Paragraph- und Table-Knoten abzurufen. Als kleine Abwechslung duplizieren wir stattdessen den Inhalt und fügen ihn unter dem Original ein.
Das folgende Codebeispiel zeigt, wie der Inhalt zwischen einem Absatz und einer Tabelle mithilfe der extract_content-Methode extrahiert wird:
Möglicherweise müssen Sie den Inhalt zwischen Absätzen desselben oder eines anderen Stils extrahieren, beispielsweise zwischen Absätzen, die mit Überschriftenstilen markiert sind.
Der folgende Code zeigt, wie dies erreicht wird. Es handelt sich um ein einfaches Beispiel, das den Inhalt zwischen der ersten Instanz der Stile “Überschrift 1” und “Überschrift 3” extrahiert, ohne auch die Überschriften zu extrahieren. Dazu setzen wir den letzten Parameter auf false, der angibt, dass die Markierungsknoten nicht einbezogen werden sollen.
Bei einer ordnungsgemäßen Implementierung sollte dies in einer Schleife ausgeführt werden, um den Inhalt zwischen allen Absätzen dieser Stile aus dem Dokument zu extrahieren. Der extrahierte Inhalt wird in ein neues Dokument kopiert.
Das folgende Codebeispiel zeigt, wie Sie mithilfe der extract_content-Methode Inhalte zwischen Absätzen mit bestimmten Stilen extrahieren:
Sie können Inhalte auch zwischen Inline-Knoten wie einem Run extrahieren. Als Markierungen können Absätze aus verschiedenen Absätzen übergeben werden. Der folgende Code zeigt, wie man bestimmten Text zwischen demselben Paragraph-Knoten extrahiert.
Das folgende Codebeispiel zeigt, wie Sie mithilfe der extract_content-Methode Inhalte zwischen bestimmten Durchläufen desselben Absatzes extrahieren:
Um ein Feld als Marker zu verwenden, muss der FieldStart-Knoten übergeben werden. Der letzte Parameter der extract_content-Methode definiert, ob das gesamte Feld eingeschlossen werden soll oder nicht. Extrahieren wir den Inhalt zwischen dem Briefvorlagenfeld “FullName” und einem Absatz im Dokument. Wir verwenden die DocumentBuilder.move_to_merge_field-Methode der DocumentBuilder-Klasse. Dadurch wird der FieldStart-Knoten mit dem Namen des an ihn übergebenen Zusammenführungsfelds zurückgegeben.
In unserem Fall setzen wir den letzten an die extract_content-Methode übergebenen Parameter auf False, um das Feld von der Extraktion auszuschließen. Wir rendern den extrahierten Inhalt als PDF.
Das folgende Codebeispiel zeigt, wie Sie mithilfe der extract_content-Methode Inhalte zwischen einem bestimmten Feld und Absatz im Dokument extrahieren:
In einem Dokument wird der in einem Lesezeichen definierte Inhalt durch die BookmarkStart- und BookmarkEnd-Knoten gekapselt. Inhalte, die zwischen diesen beiden Knoten gefunden werden, bilden das Lesezeichen. Sie können jeden dieser Knoten als beliebige Markierung übergeben, auch als solche aus verschiedenen Lesezeichen, solange die Startmarkierung vor der Endmarkierung im Dokument erscheint. Wir werden diesen Inhalt mithilfe des folgenden Codes in ein neues Dokument extrahieren. Die istInklusive-Parameteroption zeigt, wie das Lesezeichen beibehalten oder verworfen wird.
Das folgende Codebeispiel zeigt, wie der Inhalt, auf den ein Lesezeichen verwiesen wird, mithilfe der extract_content-Methode extrahiert wird:
Ein Kommentar besteht aus den Knoten CommentRangeStart, CommentRangeEnd und Comment. Alle diese Knoten sind inline. Die ersten beiden Knoten kapseln den Inhalt des Dokuments, auf das der Kommentar verweist, wie im Screenshot unten zu sehen ist. Der Comment-Knoten selbst ist ein InlineStory, das Absätze und Läufe enthalten kann. Es stellt die Botschaft des Kommentars dar, die als Kommentarblase im Überprüfungsbereich angezeigt wird. Da dieser Knoten inline ist und von einem Text abstammt, können Sie den Inhalt auch aus dieser Nachricht extrahieren.
Der Kommentar fasst die Überschrift, den ersten Absatz und die Tabelle im zweiten Abschnitt zusammen. Extrahieren wir diesen Kommentar in ein neues Dokument. Die istInklusive-Option bestimmt, ob der Kommentar selbst beibehalten oder verworfen wird.
Das folgende Codebeispiel zeigt, wie das geht:
Es gibt folgende Möglichkeiten, Text aus dem Dokument abzurufen:
Ein Word-Dokument kann Steuerzeichen enthalten, die spezielle Elemente wie Feld, Zellenende, Abschnittsende usw. kennzeichnen. Die vollständige Liste möglicher Word-Steuerzeichen ist in der ControlChar-Klasse definiert. Die Node.get_text-Methode gibt Text mit allen im Knoten vorhandenen Steuerzeichen zurück.
Der Aufruf von to_string gibt nur die Klartextdarstellung des Dokuments ohne Steuerzeichen zurück. Weitere Informationen zum Exportieren als Nur-Text finden Sie unter “Verwenden von SaveFormat.TEXT”
Das folgende Codebeispiel zeigt den Unterschied zwischen dem Aufruf der get_text- und to_string-Methoden auf einem Knoten:
SaveFormat.TextIn diesem Beispiel wird das Dokument wie folgt gespeichert:
Das folgende Codebeispiel zeigt, wie ein Dokument im TXT-Format gespeichert wird:
Möglicherweise müssen Sie Dokumentbilder extrahieren, um einige Aufgaben auszuführen. Aspose.Words ermöglicht Ihnen dies ebenfalls.
Das folgende Codebeispiel zeigt, wie Bilder aus einem Dokument extrahiert werden:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.