Práce s obsahem
Často budete pracovat s dokumenty obsahujícími obsah (TOC). Použití Aspose.Words můžete vložit vlastní tabulku obsahu nebo kompletně obnovit stávající tabulku obsahu v dokumentu pomocí několika řádků kódu.
Tento článek nastiňuje, jak pracovat s obsahem pole a ukazuje:
- Jak vložit nový TOC.
- Aktualizovat nové nebo stávající TOC v dokumentu.
- Specifikujte přepínače pro ovládání formátování a celkové struktury TOC.
- Jak upravit styly a vzhled obsahu.
- Jak odstranit celý
TOC
pole spolu se všemi záznamy z dokumentu.
Vložit obsah programově
Můžete vložit TOC
(obsah) pole do dokumentu na aktuální pozici voláním InsertTableOfContents metoda.
Tabulka obsahu v dokumentu Word lze vytvořit několika způsoby a formátovat pomocí různých možností. Pole přepíná, které přecházíte na metodu ovládání způsobu, jakým je tabulka postavena a zobrazena ve vašem dokumentu.
Výchozí spínače, které jsou použity v TOC
vloženo do Microsoft Word jsou “To je ono. Popisy těchto přepínačů a seznam podporovaných přepínačů naleznete později v článku. Můžete buď použít tento návod k získání správných přepínačů nebo pokud již máte dokument obsahující podobné TOC
že chcete zobrazit kódy polí (ALT+F9) a zkopírovat přepínače přímo z pole.
Následující příklad kódu ukazuje, jak vložit pole Obsah:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
// Insert a table of contents at the beginning of the document. | |
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u"); | |
// The newly inserted table of contents will be initially empty. | |
// It needs to be populated by updating the fields in the document. | |
doc.updateFields(); | |
doc.save(dataDir + "InsertATableOfContentsField_out.docx"); |
Následující příklad kódu ukazuje, jak vložit tabulku obsahu (TOC) do dokumentu s použitím stylů záhlaví jako položky:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
// Create a document builder to insert content with into document. | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
// Insert a table of contents at the beginning of the document. | |
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u"); | |
// Start the actual document content on the second page. | |
builder.insertBreak(BreakType.PAGE_BREAK); | |
// Build a document with complex structure by applying different heading styles thus creating TOC entries. | |
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1); | |
builder.writeln("Heading 1"); | |
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2); | |
builder.writeln("Heading 1.1"); | |
builder.writeln("Heading 1.2"); | |
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1); | |
builder.writeln("Heading 2"); | |
builder.writeln("Heading 3"); | |
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2); | |
builder.writeln("Heading 3.1"); | |
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_3); | |
builder.writeln("Heading 3.1.1"); | |
builder.writeln("Heading 3.1.2"); | |
builder.writeln("Heading 3.1.3"); | |
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2); | |
builder.writeln("Heading 3.2"); | |
builder.writeln("Heading 3.3"); | |
// Call the method below to update the TOC. | |
doc.updateFields(); | |
doc.save(dataDir + "InsertATableOfContentsUsingHeadingStyles_out.docx"); |
Kód ukazuje, že nová tabulka obsahu je vložena do prázdného dokumentu. The DocumentBuilder třída se pak používá k vložení určitého obsahu vzorku formátování s příslušnými styly záhlaví, které se používají k označení obsahu, který má být zařazen do TOC. Další linie pak zalidnit TOC
aktualizací polí a rozložení stránky dokumentu.
TOC
pole, ale bez viditelného obsahu. To proto, že TOC
pole bylo vloženo, ale dosud není obsazeno, dokud není aktualizováno v dokumentu. Další informace o tom jsou diskutovány v následující části.
Aktualizovat Obsah
Aspose.Words umožňuje kompletně aktualizovat TOC
jen pár řádků kódu. To se dá udělat, aby se nově vložené populace TOC
nebo aktualizovat existující TOC
po provedení změn dokumentu.
Pro aktualizaci musí být použity tyto dvě metody: TOC
Pole v dokumentu:
Upozorňujeme, že tyto dvě metody aktualizace musí být v tomto pořadí volány. V případě obrácení tabulky obsahu bude obsazena, ale nezobrazí se žádná čísla stránek. Lze aktualizovat libovolný počet různých TOC. Tyto metody automaticky aktualizují všechny TOC nalezené v dokumentu.
Následující příklad kódu ukazuje, jak kompletně obnovit TOC
pole v dokumentu zavoláním aktualizací polí:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
doc.updateFields(); |
První hovor Document.updateFields() bude stavět TOC
, všechny textové záznamy jsou obsazeny a TOC
Vypadá to skoro kompletní. Jediné, co chybí, jsou čísla stránek, které jsou nyní zobrazeny s??
Druhý hovor Document.updatePageLayout() vytvoří uspořádání dokumentu v paměti. To je třeba udělat pro shromažďování čísel stránek záznamů. Správná čísla stránky vypočtená z tohoto hovoru se pak vloží do TOC.
Použít přepínače k ovládání obsahu Chování
Stejně jako u jiných polí, TOC
pole může přijmout přepínače definované v kódu pole, které řídí, jak je obsah postaven. Některé spínače se používají k řízení, které položky jsou zahrnuty, a na jaké úrovni, zatímco ostatní jsou používány pro kontrolu vzhledu TOC. Přepínače lze kombinovat dohromady, aby se vytvořila složitá tabulka obsahu.
Ve výchozím nastavení jsou tyto přepínače zahrnuty při vkládání výchozí hodnoty TOC
v dokumentu. A TOC
bez výhybek bude obsahovat obsah ze vestavěných stylů (jako když je nastaven \O switch).
Dostupné TOC
přepínače, které jsou podporovány Aspose.Words jsou uvedeny níže a jejich použití je podrobně popsáno. Mohou být rozděleny do samostatných sekcí podle svého typu. Přepínače v první části definují, jaký obsah má obsahovat TOC
a přepínače ve druhém úseku ovládají vzhled TOC.
Pokud zde není uveden spínač, není v současné době podporován. Všechny přepínače budou podporovány v budoucích verzích. Přidáváme další podporu každému vydání.
Spínače vstupních značek
Přepnout | Popis zboží |
---|---|
Heading Styles *(\O Switch) * |
Tento spínač definuje, že |
![style-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-3.png)
Jakýkoli obsah upravený těmito styly je zahrnut v obsahu. Úroveň záhlaví bude definovat odpovídající hierarchickou úroveň vstupu v TOC. Například odstavec s číslem 1 bude považován za první úroveň v `TOC` Zatímco odstavec s číslem 2 bude považován za další úroveň v hierarchii a tak dále.
*(\U switch) *
|
Každý odstavec může definovat úroveň obrysu podle možností odstavce.
![modify-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-4.png)
Toto nastavení určuje, která úroveň by měla být v hierarchii dokumentu upravena. Jedná se o běžně používanou praxi používanou pro snadnou strukturu uspořádání dokumentu. Tuto hierarchii lze prohlížet přechodem na Outline View Microsoft Word. Podobně jako ve stylu záhlaví, může být kromě úrovně "Body Text" 1 a 9 obrysových úrovní. Východiska úrovně 1 a 9 se objeví v `TOC` v odpovídající úrovni hierarchie
Jakýkoliv obsah s obrysovou úrovní buď stanovenou v odstavci, nebo přímo na samotném odstavci je zahrnut do TOC. In Aspose.Words úroveň obrysu představuje `ParagraphFormat.OutlineLevel` vlastnictví uzel odstavce. Nastavovací úroveň odstínu představuje stejným způsobem `Style.ParagraphFormat` majetek.
Všimněte si, že vestavěné styly záhlaví, jako je položka 1, mají úroveň obrysu povinnou nastavenou v nastavení stylu.
*(\ T switch) *
|
Tento spínač umožní použití vlastních stylů při shromažďování položek v TOC. Často se používá ve spojení s \O přepínačem, aby zahrnoval vlastní styly spolu s vestavěným kurzovým stylem v TOC.
Parametry přepínače by měly být uvedeny ve znacích řeči. Mnoho vlastních stylů může být zahrnuto, pro každý styl, název by měl být uveden následuje čárka následuje úroveň, že styl by se měl objevit v `TOC` a. Další styly jsou také odděleny čárkou.
Například
{ TOC \o "1-3" \t "CustomHeading1, 1, CustomHeading2, 2"}
bude používat obsah ve stylu CustomHeading1 jako obsah úrovně 1 v `TOC` a CustomHeading2 jako úroveň 2.
| | Použít TC pole*(\F a \L přepínače) *
|
Ve starších verzích Microsoft Word, Jediný způsob, jak postavit `TOC` bylo použití TC polí. Tato pole jsou vložena do dokumentu, i když jsou zobrazeny kódy polí. Zahrnuje text, který by měl být zobrazen v záznamu a `TOC` je z nich postaven. Tato funkce se nyní nepoužívá velmi často, ale může být stále užitečné v některých případech zahrnout položky do `TOC` které nejsou označeny jako viditelné v dokumentu.
Při vložení se tato pole objeví skrytá i při zobrazení kódů polí. Nemůžou být vidět, aniž by ukázali skrytý obsah. Pro zobrazení těchto polí je třeba zvolit formátování odstavce.
![setup-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-5.png)
Tato pole mohou být vložena do dokumentu v jakékoli pozici, jako je jakékoli jiné pole a jsou zastoupena `FieldType.FieldTOCEntry` výčtu.
\F přepínač v `TOC` se používá k upřesnění, že TC pole by měla být použita jako položky. Přepínač sám o sobě bez jakéhokoliv dalšího identifikátoru znamená, že bude zahrnuto jakékoliv TC pole v dokumentu. Jakýkoli další parametr, často jedno písmeno, určí, že do TOC budou zahrnuta pouze TC pole, která mají odpovídající \f switch. Například *
{ TOC \f t }
budou zahrnovat pouze TC pole jako např.
{ TC \f t }
The `TOC` pole má také související spínač, spínač
![table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-6.png)
The `TC` Pole sama o sobě mohou mít `{several, multiple, a few, many, numerous}` přepínače nastaveny. Jedná se o:
- Vysvětlováno výše. *
Určuje, na jaké úrovni `TOC` Tohle TC pole se objeví. A `TOC` který používá stejný spínač, bude obsahovat toto TC pole pouze tehdy, pokud se nachází ve stanoveném rozsahu.
- Ne. Číslování této stránky `TOC` záznam není zobrazen. Vzorový kód, jak vložit TC pole, naleznete v následující sekci.
|Spínače týkající se vzhledu
Přepnout | Popis zboží |
---|---|
Omit Page Numbers *(\N Switch) * |
Tento spínač se používá ke skrytí čísel stránek pro určité úrovně TOC. Například, můžete definovat |
{TOC \o "1-4" \n "3-4" }
a čísla stránek na položky úrovně 3 a čtyři budou skryty spolu s body vůdce (pokud existují). Pro upřesnění pouze jedné úrovně by měl být stále použit rozsah, například ~1-1 ~1 - ~ bude vyloučeno číslo stránky pouze pro první úroveň.
Dodání žádné úrovně rozsah bude vynechat čísla stránek pro všechny úrovně v TOC. To je užitečné nastavit při exportu dokumentu do HTML nebo podobného formátu. To je proto, že formáty založené na HTML nemají žádnou koncepci stránky, a proto donnot potřebují jakékoliv číslování stránky.
![table-of-contents-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-7.png)
| | Vložit jako hypertextové odkazy*(\H Switch) * |
Tento spínač udává, že `TOC` položky se vkládají jako hypertextové odkazy. Při pohledu na dokument Microsoft Word tyto položky se stále objeví jako normální text uvnitř `TOC` ale jsou hyperlinkované a lze je tedy použít k navigaci do polohy původního záznamu v dokumentu pomocí *Ctrl + Left Click* v Microsoft Word. Pokud je tento spínač součástí, pak jsou tyto odkazy zachovány i v jiných formátech. Například ve formátech založených na HTML, včetně EPUB a interpretovaných formátů jako PDF a XPS, budou exportovány jako pracovní odkazy.
Bez tohoto přepínače `TOC` ve všech těchto výstupech bude exportován jako prostý text a nebude demonstrovat toto chování. Pokud je dokument otevřen v MS Word, text záznamů nebude také možné kliknout tímto způsobem, ale čísla stránek mohou být stále použita k navigaci na původní záznam.
![tree-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-8.png)
| | **Set Separator Character***(\P Switch) *
|
Tento přepínač umožňuje snadno změnit obsah oddělení názvu záznamu a číslování stránek v TOC. Oddělovač, který má být použit, by měl být za tímto přepínačem uveden a uveden ve známkách řeči.
Na rozdíl od toho, co je zdokumentováno v dokumentaci úřadu, může být použit pouze jeden znak namísto pěti. To platí jak pro MS Word a Aspose.Words.
Použití tohoto přepínače se nedoporučuje, protože neumožňuje mnoho kontroly nad tím, co použil k oddělení položek a čísel stránek v TOC. Místo toho se doporučuje upravit vhodné `TOC` styl, jako je `StyleIdentifier.TOC1` a odtud editovat styl vůdce s přístupem ke konkrétním členům písma atd. Další podrobnosti o tom, jak to udělat, najdeme později v článku.
![list-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-9.png)
| | **Preserve Tab Entries***(\W Switch) * |
Pomocí tohoto přepínače bude uvedeno, že všechny položky, které mají znak záložky, například nadpis, který má kartu na konci řádku, budou zachovány jako správný znak karty při zalidnění TOC. To znamená, že funkce znaku karty bude přítomna v `TOC` a lze jej použít pro formátování záznamu. Například některé položky mohou použít záložky a znaky záložky k rovnoměrnému vyškrtnutí textu. Tak dlouho jako odpovídající `TOC` úroveň definuje ekvivalentní kartu zastaví pak generované `TOC` položky se objeví s podobným odstupem.
Ve stejné situaci, pokud tento přepínač nebyl definován, pak by znaky záložky byly převedeny na bílý ekvivalent místa jako nefunkční záložky. Výstup by pak nevypadal podle očekávání.
![tab-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-10.png)
| | **Preserve New Line Entries***(\ X Switch) *
|
Podobně jako výše uvedený přepínač, tento spínač udává, že položky sahající přes více řádků (pomocí nových znaků, nikoli samostatných odstavců) budou zachovány tak, jak jsou ve generovaném TOC. Například nadpis, který se má šířit přes více řádků, může použít nový znak řádku (Ctrl + Enter nebo `ControlChar.LineBreak`) oddělit obsah přes různé řádky. S tímto přepínačem stanoveným, položka v `TOC` zachová tyto nové znaky, jak je uvedeno níže.
V této situaci, pokud přepínač není definován, pak nové znaky řádku jsou převedeny na jediný bílý prostor.
![tab-space-table-of-contents-field-aspose-words-java](/words/java/working-with-table-of-contents/how-to-insert-and-work-with-the-table-of-contents-field-11.png)
|Vložit pole TC
Nové TC pole můžete vložit do aktuální polohy DocumentBuilder
voláním DocumentBuilder.InsertField
způsob a uvedení názvu pole jako
Následující příklad kódu ukazuje, jak vložit TC
pole do dokumentu pomocí DocumentBuilder.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
// Create a document builder to insert content with. | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
// Insert a TC field at the current document builder position. | |
builder.insertField("TC \"Entry Text\" \\f t"); |
Často je zvláštní text určen pro TOC
a je označena TC
pole. Snadný způsob, jak to udělat v MS Word je zvýraznit text a stisknout ALT+SHIFT+O. To automaticky vytvoří a TC
pole pomocí vybraného textu. Stejnou techniku lze provést pomocí kódu. Níže uvedený kód najde text odpovídající vstupu a vloží TC
pole ve stejné pozici jako text. Kód je založen na stejné technice používané v článku. Následující příklad kódu ukazuje, jak najít a vložit TC
pole v textu v dokumentu.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
class InsertTCFieldHandler implements IReplacingCallback { | |
// Store the text and switches to be used for the TC fields. | |
private String mFieldText; | |
private String mFieldSwitches; | |
/** | |
* The switches to use for each TC field. Can be an empty string or null. | |
*/ | |
public InsertTCFieldHandler(String switches) throws Exception { | |
this(null, switches); | |
} | |
/** | |
* The display text and the switches to use for each TC field. Display text | |
* Can be an empty string or null. | |
*/ | |
public InsertTCFieldHandler(String text, String switches) throws Exception { | |
mFieldText = text; | |
mFieldSwitches = switches; | |
} | |
public int replacing(ReplacingArgs args) throws Exception { | |
// Create a builder to insert the field. | |
DocumentBuilder builder = new DocumentBuilder((Document) args.getMatchNode().getDocument()); | |
// Move to the first node of the match. | |
builder.moveTo(args.getMatchNode()); | |
// If the user specified text to be used in the field as display text then use that, otherwise use the | |
// match string as the display text. | |
String insertText; | |
if (!(mFieldText == null || "".equals(mFieldText))) | |
insertText = mFieldText; | |
else | |
insertText = args.getMatch().group(); | |
// Insert the TC field before this node using the specified string as the display text and user defined switches. | |
builder.insertField(java.text.MessageFormat.format("TC \"{0}\" {1}", insertText, mFieldSwitches)); | |
// We have done what we want so skip replacement. | |
return ReplaceAction.SKIP; | |
} | |
} |
Upravit obsah
Změnit formátování stylů
Formátování záznamů v TOC
nepoužívá původní styly označených položek, místo toho je každá úroveň formátována za použití rovnocenného TOC
Styl. Například první úroveň TOC
je formátován s TOC1 styl, druhá úroveň formátovaná s TOC2 styl a tak dále. To znamená, že změnit vzhled TOC
Tyto styly musí být upraveny. In Aspose.Words Tyto styly jsou reprezentovány locale-nezávislý StyleIdentifier.TOC1
až do StyleIdentifier.TOC9
a lze získat z Document.Styles
sběr pomocí těchto identifikátorů.
Jakmile bude příslušný styl dokumentu vybrán, formátování tohoto stylu lze upravit. Veškeré změny těchto stylů se automaticky projeví v TOC v dokumentu.
Následující příklad kódu mění vlastnost formátování použitou v první úrovni TOC
Styl.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
public static void changeAFormattingPropertyUsedInFirstLevelTOCStyle() throws Exception { | |
Document doc = new Document(); | |
// Retrieve the style used for the first level of the TOC and change the formatting of the style. | |
doc.getStyles().getByStyleIdentifier(StyleIdentifier.TOC_1).getFont().setBold(true); | |
} |
Je rovněž užitečné poznamenat, že jakékoli přímé formátování odstavce (definované v samotném odstavci a nikoli ve stylu), které mají být zahrnuty do TOC
bude zkopírován v záznamu v TOC. Například, pokud se používá styl záhlaví 1 k označení obsahu TOC
a tento styl má odvážný formátování, zatímco odstavec má také kurzívu formátování přímo aplikovat na něj. Výsledek TOC
vstup nebude troufalý, protože je součástí formátování stylu, ale bude italický, protože je přímo formátován na odstavci.
Můžete také ovládat formátování oddělovačů použitých mezi jednotlivými položkami a číslem stránky. Ve výchozím nastavení se jedná o tečkovanou čárku, která je rozložena do číslování stránky pomocí znakové karty a pravé záložky zastavit seřazené v blízkosti správného okraje.
Použití Style
třída získaná pro konkrétní TOC
úroveň, kterou chcete upravit, můžete také upravit, jak se objeví v dokumentu.
Abych změnil, jak to vypadá, Style.ParagraphFormat
musí být vyzván, aby získal odstavec formátování pro styl. Z toho lze záložka zastavit voláním ParagraphFormat.TabStops
a odpovídajícím zastavením karty. Pomocí stejné techniky lze kartu úplně přesunout nebo úplně odstranit.
Následující příklad kódu ukazuje, jak upravit pozici pravé záložky zastavit v TOC
související odstavce.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
public static void modifyPositionOfRightTabStopInTOC() throws Exception { | |
Document doc = new Document(dataDir + "Field.TableOfContents.doc"); | |
// Iterate through all paragraphs in the document | |
for (Paragraph para : (Iterable<Paragraph>) doc.getChildNodes(NodeType.PARAGRAPH, true)) { | |
// Check if this paragraph is formatted using the TOC result based styles. This is any style between TOC and TOC9. | |
if (para.getParagraphFormat().getStyle().getStyleIdentifier() >= StyleIdentifier.TOC_1 && para.getParagraphFormat().getStyle().getStyleIdentifier() <= StyleIdentifier.TOC_9) { | |
// Get the first tab used in this paragraph, this should be the tab used to align the page numbers. | |
TabStop tab = para.getParagraphFormat().getTabStops().get(0); | |
// Remove the old tab from the collection. | |
para.getParagraphFormat().getTabStops().removeByPosition(tab.getPosition()); | |
// Insert a new tab using the same properties but at a modified position. | |
// We could also change the separators used (dots) by passing a different Leader type | |
para.getParagraphFormat().getTabStops().add(tab.getPosition() - 50, tab.getAlignment(), tab.getLeader()); | |
} | |
} | |
doc.save(dataDir + "Field.TableOfContentsTabStops_Out.doc"); | |
} |
Odstranit obsah dokumentu
Obsah lze z dokumentu odstranit odstraněním všech uzlů nalezených mezi FieldStart
a FieldEnd uzel TOC
pole.
Níže uvedený kód to dokazuje. Odstranění TOC
pole je jednodušší než normální pole, protože nesledujeme hnízdiště. Místo toho zkontrolujeme FieldEnd
Uzel typu FieldType.FieldTOC
Což znamená, že jsme narazili na konec současného TOC. Tato technika může být použita v tomto případě bez obav o vnořená pole, protože můžeme předpokládat, že žádný řádně vytvořený dokument nebude mít plně hnízdit TOC
pole uvnitř jiného TOC
pole.
Zaprvé: FieldStart
uzly každého TOC
jsou shromažďovány a skladovány. Zadané TOC
je pak vyjmenován, takže všechny uzly v poli jsou navštíveny a uloženy. Uzely jsou pak z dokumentu odstraněny. Následující příklad kódu ukazuje, jak odstranit zadané TOC
z dokumentu.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Open a document which contains a TOC. | |
Document doc = new Document(dataDir + "Document.TableOfContents.doc"); | |
// Remove the first table of contents from the document. | |
removeTableOfContents(doc, 0); | |
// Save the output. | |
doc.save(dataDir + "Document.TableOfContentsRemoveToc_Out.doc"); |
Obsah výpisu
Pokud chcete z jakéhokoli dokumentu Word extrahovat tabulku obsahu, můžete použít následující vzorek kódu.
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(ExtractTableOfContents.class) + "TableOfContents/"; | |
String fileName = "TOC.doc"; | |
Document doc = new Document(dataDir + fileName); | |
for (Field field : (Iterable<Field>)doc.getRange().getFields()) | |
{ | |
if (field.getType() == FieldType.FIELD_HYPERLINK) | |
{ | |
FieldHyperlink hyperlink = (FieldHyperlink)field; | |
if (hyperlink.getSubAddress() != null && hyperlink.getSubAddress().startsWith("_Toc")) | |
{ | |
Paragraph tocItem = (Paragraph)field.getStart().getAncestor(NodeType.PARAGRAPH); | |
System.out.println(tocItem.toString(SaveFormat.TEXT).trim()); | |
System.out.println("------------------"); | |
if (tocItem != null) | |
{ | |
Bookmark bm = doc.getRange().getBookmarks().get(hyperlink.getSubAddress()); | |
// Get the location this TOC Item is pointing to | |
Paragraph pointer = (Paragraph)bm.getBookmarkStart().getAncestor(NodeType.PARAGRAPH); | |
System.out.println(pointer.toString(SaveFormat.TEXT)); | |
} | |
} // End If | |
}// End If | |
}// End Foreach |