Arbeiten mit Inhaltsverzeichnissen

Häufig arbeiten Sie mit Dokumenten, die ein Inhaltsverzeichnis (TOC) enthalten. Mit Aspose.Words können Sie Ihr eigenes Inhaltsverzeichnis einfügen oder das vorhandene Inhaltsverzeichnis im Dokument mit nur wenigen Codezeilen vollständig neu erstellen.

In diesem Artikel wird beschrieben, wie Sie mit dem Inhaltsverzeichnisfeld arbeiten und veranschaulichen:

  • So fügen Sie eine brandneue TOC ein.
  • Aktualisieren Sie neue oder vorhandene TOCs im Dokument.
  • Geben Sie Schalter an, um die Formatierung und die Gesamtstruktur von TOC zu steuern.
  • So ändern Sie die Stile und das Erscheinungsbild des Inhaltsverzeichnisses.
  • So entfernen Sie ein ganzes TOC -Feld zusammen mit allen Einträgen aus dem Dokument.

Inhaltsverzeichnis programmgesteuert einfügen

Sie können ein TOC-Feld (Inhaltsverzeichnis) an der aktuellen Position in das Dokument einfügen, indem Sie die InsertTableOfContents -Methode aufrufen.

Ein Inhaltsverzeichnis in einem Word-Dokument kann auf verschiedene Arten erstellt und mit einer Vielzahl von Optionen formatiert werden. Die Feldschalter, die Sie an die Methode übergeben, steuern die Art und Weise, wie die Tabelle in Ihrem Dokument erstellt und angezeigt wird.

Die Standardschalter, die in einer in Microsoft Word eingefügten TOC verwendet werden, sind "\o “1-3 \h \z \u”. Beschreibungen dieser Schalter sowie eine Liste der unterstützten Schalter finden Sie später im Artikel. Sie können entweder diese Anleitung verwenden, um die richtigen Schalter zu erhalten, oder wenn Sie bereits ein Dokument haben, das die gewünschten ähnlichen TOC enthält, können Sie Feldcodes (ALT+F9) anzeigen und die Schalter direkt aus dem Feld kopieren.

Das folgende Codebeispiel zeigt, wie Sie ein Inhaltsverzeichnisfeld in ein Dokument einfügen:

Das folgende Codebeispiel zeigt, wie Sie ein Inhaltsverzeichnis (TOC) mit Überschriftenstilen als Einträge in ein Dokument einfügen:

Der Code zeigt, dass das neue Inhaltsverzeichnis in ein leeres Dokument eingefügt wird. Die DocumentBuilder -Klasse wird dann verwendet, um einige Beispielinhaltsformatierungen mit den entsprechenden Überschriftenstilen einzufügen, die verwendet werden, um den Inhalt zu markieren, der in TOC aufgenommen werden soll. Die nächsten Zeilen füllen dann die TOC aus, indem Sie die Felder und das Seitenlayout des Dokuments aktualisieren.

insert-table-of-contents-field-aspose-words-java

Inhaltsverzeichnis aktualisieren

Mit Aspose.Words können Sie eine TOC mit nur wenigen Codezeilen vollständig aktualisieren. Dies kann getan werden, um eine neu eingefügte TOC zu füllen oder eine vorhandene TOC zu aktualisieren, nachdem Änderungen am Dokument vorgenommen wurden.

Die folgenden zwei Methoden müssen verwendet werden, um die TOC-Felder im Dokument zu aktualisieren:

  1. Document.updateFields()
  2. Document.updatePageLayout()

Bitte beachten Sie, dass diese beiden Aktualisierungsmethoden in dieser Reihenfolge aufgerufen werden müssen. Wenn umgekehrt, wird das Inhaltsverzeichnis ausgefüllt, aber es werden keine Seitenzahlen angezeigt. Es können beliebig viele verschiedene TOCs aktualisiert werden. Diese Methoden aktualisieren automatisch alle im Dokument gefundenen TOCs.

Das folgende Codebeispiel zeigt, wie TOC-Felder im Dokument durch Aufrufen von Feldaktualisierungen vollständig neu erstellt werden:

Der erste Aufruf von Document.updateFields() erstellt die TOC, alle Texteinträge werden ausgefüllt und die TOC erscheint fast vollständig. Es fehlen nur noch die Seitenzahlen, die vorerst mit “?” angezeigt werden.

Der zweite Aufruf von Document.updatePageLayout() erstellt das Layout des Dokuments im Speicher. Dies muss getan werden, um die Seitenzahlen der Einträge zu erfassen. Die aus diesem Aufruf berechneten korrekten Seitenzahlen werden dann in die TOC eingefügt.

Verwenden Sie Schalter, um das Verhalten des Inhaltsverzeichnisses zu steuern

Wie bei jedem anderen Feld kann das Feld TOC Schalter akzeptieren, die im Feldcode definiert sind, der steuert, wie das Inhaltsverzeichnis erstellt wird. Bestimmte Schalter werden verwendet, um zu steuern, welche Einträge enthalten sind und auf welcher Ebene, während andere verwendet werden, um das Erscheinungsbild von TOC zu steuern. Schalter können miteinander kombiniert werden, um ein komplexes Inhaltsverzeichnis zu erstellen.

ccontrol-table-of-contents-field-aspose-words-java

Standardmäßig sind diese obigen Schalter enthalten, wenn eine Standard TOC in das Dokument eingefügt wird. Eine TOC ohne Schalter enthält Inhalte aus den integrierten Überschriftenstilen (als ob der Schalter \O gesetzt wäre).

Die verfügbaren TOC-Switches, die von Aspose.Words unterstützt werden, sind unten aufgeführt und ihre Verwendung wird detailliert beschrieben. Sie können je nach Typ in separate Abschnitte unterteilt werden. Die Schalter im ersten Abschnitt definieren, welcher Inhalt in TOC aufgenommen werden soll, und die Schalter im zweiten Abschnitt steuern das Erscheinungsbild von TOC.

Wenn ein Switch hier nicht aufgeführt ist, wird er derzeit nicht unterstützt. Alle Switches werden in zukünftigen Versionen unterstützt. Wir fügen jedem Release weitere Unterstützung hinzu.

Eingangsmarkierungsschalter

Schalter Beschreibung
Heading Styles
(\O Schalter)

Dieser Schalter definiert, dass die TOC aus den integrierten Überschriftenstilen aufgebaut werden soll. In Microsoft Word sind diese durch Heading 1 – Heading 9 definiert. In Aspose.Words werden diese Stile durch die entsprechende StyleIdentifier -Aufzählung dargestellt. Diese Aufzählung stellt eine gebietsschemaunabhängige Kennung eines Stils dar, z. B. StyleIdentifier.Heading1 repräsentiert den Heading 1-Stil. Damit können die Formatierung und die Eigenschaften des Stils aus der Stilsammlung des Dokuments abgerufen werden. Die entsprechende Stilklasse kann aus der Document.Styles -Auflistung abgerufen werden, indem die indizierte Eigenschaft vom Typ StyleIdentifier verwendet wird.

style-table-of-contents-field-aspose-words-java



Alle Inhalte, die mit diesen Stilen formatiert sind, sind im Inhaltsverzeichnis enthalten. Die Ebene der Überschrift definiert die entsprechende Hierarchieebene des Eintrags in TOC. Zum Beispiel wird ein Absatz mit dem Stil Heading 1 als erste Ebene in TOC behandelt, während ein Absatz mit Heading 2 als nächste Ebene in der Hierarchie behandelt wird und so weiter.

Outline Levels
(\U Schalter)

Jeder Absatz kann unter Absatzoptionen eine Gliederungsebene definieren.

modify-table-of-contents-field-aspose-words-java



Diese Einstellung bestimmt, auf welcher Ebene dieser Absatz in der Dokumenthierarchie behandelt werden soll. Dies ist eine häufig verwendete Vorgehensweise, um das Layout eines Dokuments einfach zu strukturieren. Diese Hierarchie kann angezeigt werden, indem Sie in Microsoft Word zur Gliederungsansicht wechseln. Ähnlich wie bei Überschriftenstilen kann es zusätzlich zur Ebene “Fließtext” 1 – 9 Gliederungsebenen geben. Gliederungsebenen 1 – 9 werden in TOC in der entsprechenden Hierarchieebene angezeigt
Jeder Inhalt mit einer Gliederungsebene, die entweder im Absatzstil oder direkt im Absatz selbst festgelegt ist, ist in TOC enthalten. In Aspose.Words wird die Gliederungsebene durch die Eigenschaft ParagraphFormat.OutlineLevel des Absatzknotens dargestellt. Die Gliederungsebene eines Absatzformats wird auf die gleiche Weise durch die Eigenschaft Style.ParagraphFormat dargestellt.

Custom Styles
(\T Schalter)

Mit diesem Schalter können benutzerdefinierte Stile verwendet werden, wenn Einträge gesammelt werden, die in TOC verwendet werden sollen. Dies wird häufig in Verbindung mit dem Schalter \O verwendet, um benutzerdefinierte Stile zusammen mit integrierten Überschriftenstilen in TOC einzuschließen.
Die Parameter des Schalters sollten in Sprachmarken eingeschlossen sein. Viele benutzerdefinierte Stile können enthalten sein.Für jeden Stil sollte der Name gefolgt von einem Komma gefolgt von der Ebene angegeben werden, auf der der Stil in TOC als angezeigt werden soll. Weitere Stile werden ebenfalls durch ein Komma getrennt.
Beispielsweise

{ TOC \o "1-3" \t "CustomHeading1, 1,   CustomHeading2, 2"}

verwendet Inhalte, die mit CustomHeading1 als Inhalt der Ebene 1 in TOC und CustomHeading2 als Ebene 2 formatiert sind.

TC-Felder verwenden
(\F und \L Schalter)

In älteren Versionen von Microsoft Word war die einzige Möglichkeit, eine TOC zu erstellen, die Verwendung von TC -Feldern. Diese Felder werden ausgeblendet in das Dokument eingefügt, auch wenn Feldcodes angezeigt werden. Sie enthalten den Text, der im Eintrag angezeigt werden soll, und die TOC wird daraus erstellt. Diese Funktionalität wird jetzt nicht sehr oft verwendet, kann aber in einigen Fällen immer noch nützlich sein, um Einträge in TOC aufzunehmen, die nicht eingerückt sind, um im Dokument sichtbar zu sein.
Beim Einfügen erscheinen diese Felder ausgeblendet, auch wenn Feldcodes angezeigt werden. Sie können nicht gesehen werden, ohne versteckte Inhalte anzuzeigen. Um zu sehen, dass diese Felder Absatzformatierungen anzeigen, muss ausgewählt sein.

setup-table-of-contents-field-aspose-words-java

Diese Felder können wie jedes andere Feld an beliebiger Stelle in ein Dokument eingefügt werden und werden durch die FieldType.FieldTOCEntry-Aufzählung dargestellt.
Der Schalter \F in a TOC wird verwendet, um anzugeben, dass TC-Felder als Einträge verwendet werden sollen. Der Schalter allein ohne zusätzliche Kennung bedeutet, dass jedes TC -Feld im Dokument enthalten ist. Jeder zusätzliche Parameter, oft ein einzelner Buchstabe, gibt an, dass nur TC -Felder mit einem übereinstimmenden \f-Schalter in TOC enthalten sind. Beispielsweise

{ TOC \f t }

enthält nur TC Felder wie

{ TC \f t }

Das Feld TOC hat auch einen zugehörigen Schalter, der Schalter “\ L” gibt an, dass nur das Feld TC mit Ebenen innerhalb des angegebenen Bereichs enthalten ist.

table-of-contents-field-aspose-words-java



In den TC -Feldern selbst können auch {several, multiple, a few, many, numerous} -Schalter gesetzt sein. Diese sind:

– \F - Oben erklärt.

– \L - Definiert, auf welcher Ebene in TOC dieses Feld TC angezeigt wird. Eine TOC, die denselben Schalter verwendet, enthält dieses TC -Feld nur, wenn es innerhalb des angegebenen Bereichs liegt.

- _\N - Die Seitennummerierung für diesen TOC-Eintrag wird nicht angezeigt.Beispielcode zum Einfügen von TC -Feldern finden Sie im nächsten Abschnitt.

Aussehen Bezogene Schalter

Schalter Beschreibung
Omit Page Numbers
(\N Schalter)

Dieser Schalter wird verwendet, um Seitenzahlen für bestimmte Ebenen von TOC auszublenden. Sie können beispielsweise definieren

{TOC \o "1-4" \n "3-4" }

und die Seitenzahlen auf den Einträgen der Ebenen 3 und vier werden zusammen mit den Führungspunkten (falls vorhanden) ausgeblendet. Um nur eine Ebene anzugeben, sollte weiterhin ein Bereich verwendet werden, z. B. schließt “1-1” Seitenzahlen nur für die erste Ebene aus.
Wenn Sie keinen Ebenenbereich angeben, werden Seitenzahlen für alle Ebenen in TOC weggelassen. Dies ist nützlich, wenn Sie ein Dokument in HTML oder ein ähnliches Format exportieren. Dies liegt daran, dass HTML -basierte Formate kein Seitenkonzept haben und daher keine Seitennummerierung benötigen.

table-of-contents-aspose-words-java

Als Hyperlinks einfügen
(\H Schalter)

Dieser Schalter gibt an, dass TOC-Einträge als Hyperlinks eingefügt werden. Wenn Sie ein Dokument in Microsoft Word anzeigen, werden diese Einträge weiterhin als normaler Text innerhalb von TOC angezeigt, sind jedoch mit einem Hyperlink versehen und können daher verwendet werden, um mit Ctrl + Left Click in Microsoft Word zur Position des ursprünglichen Eintrags im Dokument zu navigieren. Wenn dieser Schalter enthalten ist, werden diese Links auch in anderen Formaten beibehalten. Beispielsweise werden diese in HTML-basierten Formaten, einschließlich EPUB und gerenderten Formaten wie PDF und XPS, als Arbeitslinks exportiert.
Ohne diesen Schalter werden die TOC in all diesen Ausgaben als Klartext exportiert und zeigen dieses Verhalten nicht. Wenn ein Dokument in MS Word geöffnet wird, kann der Text der Einträge auch auf diese Weise nicht angeklickt werden, aber die Seitenzahlen können weiterhin verwendet werden, um zum ursprünglichen Eintrag zu navigieren.

tree-table-of-contents-field-aspose-words-java

Set Separator Character
(\P Schalter)

Mit diesem Schalter kann der Inhalt, der den Titel des Eintrags und die Seitennummerierung trennt, einfach in TOC geändert werden. Das zu verwendende Trennzeichen sollte nach diesem Schalter angegeben und in Sprachmarken eingeschlossen werden.
Im Gegensatz zu dem, was in der Office-Dokumentation dokumentiert ist, kann nur ein Zeichen anstelle von bis zu fünf Zeichen verwendet werden. Dies gilt sowohl für MS Word als auch für Aspose.Words.
Die Verwendung dieses Schalters wird nicht empfohlen, da er nicht viel Kontrolle darüber zulässt, was er zum Trennen von Einträgen und Seitenzahlen in TOC verwendet hat. Stattdessen wird empfohlen, den entsprechenden TOC -Stil wie StyleIdentifier.TOC1 zu bearbeiten und von dort aus den Führungsstil mit Zugriff auf bestimmte Schriftelemente usw. zu bearbeiten. Weitere Einzelheiten dazu finden Sie später im Artikel.

list-table-of-contents-field-aspose-words-java

Preserve Tab Entries
(\W Schalter)

Mit diesem Schalter wird festgelegt, dass alle Einträge mit einem Tabulatorzeichen, z. B. eine Überschrift mit einem Tabulator am Zeilenende, beim Auffüllen von TOC als richtiges Tabulatorzeichen beibehalten werden. Dies bedeutet, dass die Funktion des Tabulatorzeichens in TOC vorhanden ist und zum Formatieren des Eintrags verwendet werden kann. Beispielsweise können bestimmte Einträge Tabulatoren und Tabulatorzeichen verwenden, um den Text gleichmäßig zu verteilen. Solange die entsprechende TOC -Ebene die entsprechenden Tabulatoren definiert, werden die generierten TOC -Einträge mit ähnlichem Abstand angezeigt.

In der gleichen Situation, wenn dieser Schalter nicht definiert wäre, würden die Tabulatorzeichen in Leerzeichen umgewandelt, die als nicht funktionierende Tabulatoren äquivalent sind. Die Ausgabe würde dann nicht wie erwartet erscheinen.

tab-table-of-contents-field-aspose-words-java

Preserve New Line Entries
(\X Schalter)

Ähnlich wie bei der obigen Option gibt diese Option an, dass Überschriften, die sich über mehrere Zeilen erstrecken (mit Zeilenumbrüchen, nicht mit separaten Absätzen), so beibehalten werden, wie sie im generierten TOC enthalten sind. Beispielsweise kann eine Überschrift, die über mehrere Zeilen verteilt werden soll, das Zeilenumbruchzeichen (Strg + Eingabetaste oder ControlChar.LineBreak) verwenden, um Inhalte über verschiedene Zeilen hinweg zu trennen. Wenn dieser Schalter angegeben ist, behält der Eintrag in TOC diese neuen Zeilenzeichen bei, wie unten gezeigt.

Wenn in diesem Fall der Schalter nicht definiert ist, werden die neuen Zeilenzeichen in ein einzelnes Leerzeichen konvertiert.

tab-space-table-of-contents-field-aspose-words-java

TC Felder einfügen

Sie können ein neues TC -Feld an der aktuellen Position von DocumentBuilder einfügen, indem Sie die DocumentBuilder.InsertField -Methode aufrufen und den Feldnamen zusammen mit den erforderlichen Schaltern als “TC” angeben.

Das folgende Codebeispiel zeigt, wie Sie ein TC -Feld mit DocumentBuilder in das Dokument einfügen.

Oft ist eine bestimmte Textzeile für die TOC vorgesehen und mit einem TC -Feld gekennzeichnet. Der einfache Weg, dies in MS Word zu tun, besteht darin, den Text zu markieren und ALT+SHIFT+O zu drücken. Dadurch wird automatisch ein TC-Feld mit dem ausgewählten Text erstellt. Die gleiche Technik kann durch Code erreicht werden. Der folgende Code findet Text, der der Eingabe entspricht, und fügt ein TC -Feld an derselben Position wie der Text ein. Der Code basiert auf der gleichen Technik, die im Artikel verwendet wird. Das folgende Codebeispiel zeigt, wie Sie ein TC -Feld am Text in einem Dokument suchen und einfügen.

Ändern eines Inhaltsverzeichnisses

Ändern der Formatierung von Stilen

Die Formatierung von Einträgen in TOC verwendet nicht die ursprünglichen Stile der markierten Einträge, stattdessen wird jede Ebene mit einem äquivalenten TOC -Stil formatiert. Beispielsweise ist die erste Ebene in TOC mit dem Stil TOC1 formatiert, die zweite Ebene mit dem Stil TOC2 usw. Dies bedeutet, dass diese Stile geändert werden müssen, um das Aussehen von TOC zu ändern. In Aspose.Words werden diese Stile durch die gebietsschemaunabhängigen StyleIdentifier.TOC1 bis StyleIdentifier.TOC9 dargestellt und können mit diesen Bezeichnern aus der Document.Styles -Sammlung abgerufen werden.

Sobald der entsprechende Stil des Dokuments abgerufen wurde, kann die Formatierung für diesen Stil geändert werden. Alle Änderungen an diesen Stilen werden automatisch in der TOCs im Dokument angezeigt.

Im folgenden Codebeispiel wird eine Formatierungseigenschaft geändert, die im Stil TOC der ersten Ebene verwendet wird.

Es ist auch nützlich zu beachten, dass jede direkte Formatierung eines Absatzes (definiert im Absatz selbst und nicht im Stil), die in TOC aufgenommen werden soll, in den Eintrag in TOC kopiert wird. Beispiel: Wenn der Stil Heading 1 verwendet wird, um Inhalte für TOC zu markieren, und dieser Stil fett formatiert ist, während auf den Absatz auch direkt kursive Formatierungen angewendet werden. Der resultierende TOC -Eintrag wird nicht fett gedruckt, da dies Teil der Stilformatierung ist, jedoch kursiv, da dies direkt im Absatz formatiert ist.

Sie können auch die Formatierung der Trennzeichen zwischen den einzelnen Einträgen und der Seitenzahl steuern. Standardmäßig ist dies eine gepunktete Linie, die mit einem Tabulatorzeichen und einem rechten Tabulator in der Nähe des rechten Randes über die Seitennummerierung verteilt wird.

Mithilfe der Style-Klasse, die für die bestimmte TOC-Ebene abgerufen wurde, die Sie ändern möchten, können Sie auch ändern, wie diese im Dokument angezeigt werden.

Um die Darstellung zu ändern, muss zuerst Style.ParagraphFormat aufgerufen werden, um die Absatzformatierung für den Stil abzurufen. Daraus können die Tabstopps durch Aufruf von ParagraphFormat.TabStops abgerufen und der entsprechende Tabstopp geändert werden. Mit derselben Technik kann die Registerkarte selbst verschoben oder ganz entfernt werden.

Das folgende Codebeispiel zeigt, wie Sie die Position des rechten Tabstopps in TOC-bezogenen Absätzen ändern.

Entfernen eines Inhaltsverzeichnisses aus dem Dokument

Ein Inhaltsverzeichnis kann aus dem Dokument entfernt werden, indem alle Knoten entfernt werden, die zwischen dem Knoten FieldStart und FieldEnd des Felds TOC gefunden wurden.

Der folgende Code zeigt dies. Das Entfernen des Felds TOC ist einfacher als ein normales Feld, da wir verschachtelte Felder nicht verfolgen. Stattdessen überprüfen wir, ob der FieldEnd -Knoten vom Typ FieldType.FieldTOC ist, was bedeutet, dass wir auf das Ende des aktuellen TOC gestoßen sind. Diese Technik kann in diesem Fall verwendet werden, ohne sich um verschachtelte Felder kümmern zu müssen, da wir davon ausgehen können, dass jedes ordnungsgemäß formatierte Dokument kein vollständig verschachteltes TOC -Feld in einem anderen TOC -Feld enthält.

Zuerst werden die FieldStart Knoten von jedem TOC gesammelt und gespeichert. Die angegebene TOC wird dann aufgezählt, sodass alle Knoten innerhalb des Felds besucht und gespeichert werden. Die Knoten werden dann aus dem Dokument entfernt. Das folgende Codebeispiel zeigt, wie eine angegebene TOC aus einem Dokument entfernt wird.

Inhaltsverzeichnis extrahieren

Wenn Sie ein Inhaltsverzeichnis aus einem beliebigen Word-Dokument extrahieren möchten, kann das folgende Codebeispiel verwendet werden.