Работа с Съдържание
Често ще работите с документи, съдържащи съдържание (TOC). Използване Aspose.Words Можете да поставите собствената си таблица със съдържание или напълно да възстановите съществуващото съдържание в документа само с няколко реда код. Тази статия очертава как да се работи с полето на съдържанието и показва:
- Как да поставите чисто нов
TOC
- Обновяване на нови или съществуващи TOS в документа.
- Посочете превключватели за контрол на форматирането и цялостната структура f TOC.
- Как да промените стиловете и външния вид на съдържанието.
- Как да премахнете цяло
TOC
поле заедно с всички вписвания образуват документа.
Вмъкване на програмно съдържание
Можете да поставите TOC
(таблица със съдържание) полето в документа на текущата позиция, като се нарича DocumentBuilder.insert_table_of_contents метод.
Съдържанието в документ на Word може да бъде изградено по няколко начина и форматирано чрез различни варианти. Полето превключва към метода за контрол на начина, по който масата е изградена и показана във вашия документ.
По подразбиране превключвателите, които се използват в a TOC
вложено в Microsoft Word аз “Превод и субтитри:. Описания на тези ключове, както и списък на поддържаните ключове могат да бъдат намерени по-късно в статията. Можете да използвате това ръководство, за да получите правилните ключове или ако вече имате документ, съдържащ подобни TOC
че искате можете да покажете кодове на полето (ALT+F9) и копирайте превключвателите директно от полето.
Следният пример за код показва как да се вмъкне полето на Съдържание в документ:
Кодът показва новата таблица на съдържанието, която се вмъква в празен документ. На DocumentBuilder След това се използва за въвеждане на форматиране на съдържанието на пробата с подходящи стилове на заглавие, които се използват за маркиране на съдържанието, което да бъде включено в ТОС. Следващите редове след това населяват TOC
чрез актуализиране на полетата и оформлението на страниците на документа.
TOC
поле, но без видимо съдържание. Това е защото TOC
полето е вложено, но все още не е населено, докато не бъде актуализирано в документа. Допълнителна информация за това се обсъжда в следващия раздел.
Обновяване на съдържанието
Aspose.Words Ви позволява да актуализирате напълно TOC
само с няколко реда код. Това може да се направи, за да се населят нововъведени TOC
или да актуализира съществуващо TOC
след извършване на промени в документа. Трябва да се използват следните два метода, за да се актуализира TOC
полета в документа:
Моля, имайте предвид, че тези два метода за актуализиране трябва да бъдат наричани в този ред. Ако се обърне, съдържанието ще бъде населено, но няма да бъдат показвани номера на страници. Всеки брой различни ТОК могат да бъдат актуализирани. Тези методи автоматично ще обновят всички TOS намерени в документа.
Следният пример за код показва как да се възстанови напълно TOC
полета в документа чрез ъпдейт на полето:
Първото обаждане Document.update_fields ще изгради TOC
всички текстови записи са населени и TOC
изглежда почти завършен. Единственото нещо, което липсва, е номерата на страниците, които засега се показват с гол. Второто обаждане Document.update_page_layout ще изгради оформлението на документа в памет. Това трябва да се направи, за да се съберат номерата на страниците на вписванията. Правилните номера на страниците, изчислени от това обаждане, след това се вмъкват в TOC.
Използвайте превключвателите, за да контролирате поведението на съдържанието.
Както при всяко друго поле, TOC
полето може да приема превключватели, определени в кода на полето, които контролират начина на изграждане на съдържанието. Някои превключватели се използват за контрол кои записи са включени и на какво ниво, докато други се използват за контрол на външния вид на TOC. Превключвателите могат да се комбинират заедно, за да се даде възможност за производство на сложна таблица на съдържанието.
По подразбиране тези ключове по-горе са включени при поставяне по подразбиране TOC
в документа. A TOC
без превключватели ще включва съдържание от вградените стилове на заглавие (като че ли \O превключвател е настроен). Наличните TOC
превключватели, които се поддържат от Aspose.Words са изброени по-долу и тяхната употреба са описани подробно. Те могат да бъдат разделени на отделни секции, базирани на техния тип. Превключвателите в първия раздел определят какво съдържание да се включи в TOC
и превключвателите във втората секция контролират външния вид на TOC. Ако бутонът не е записан тук, в момента не се поддържа. Всички превключватели ще бъдат поддържани в бъдещи версии. Добавяме допълнителна подкрепа с всяко освобождаване.
Превключватели
Превключване | Описание |
---|---|
Heading Styles *(\O Switch) * |
Този превключвател определя, че |
![working-with-table-of-contents-styles](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-2.png)
Всяко съдържание, форматирано с тези стилове, е включено в съдържанието. Нивото на заглавието ще определи съответното йерархично ниво на вписването в TOC. Например параграф със стил "No 1" ще бъде третиран като първо ниво `TOC` като има предвид, че параграф с функция 2 ще се разглежда като следващото ниво в йерархията и така нататък.
| | **Outline Levels***(\U превключвател) * |
Всеки параграф може да определи ниво на очертание съгласно възможностите по параграф.
![working-with-table-of-contents-paragraph](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-3.png)
Тази настройка диктува на кое ниво този параграф следва да се разглежда в йерархията на документите. Това обикновено се използва практика, използвана за лесно структуриране на оформлението на документ. Тази йерархия може да се разглежда чрез промяна на Outline View в Microsoft Word. Подобно на заглавията стилове, може да има 1 по 9 очертания нива в допълнение към нивото на Body текст. Outline нива 1 по 9 ще се появи в `TOC` на съответното ниво на йерархията
Всяко съдържание с ниво на очертания, определено в стила на параграфа или директно на самия параграф, е включено в ТОС. В Aspose.Words нивото на контура е представено от `ParagraphFormat.OutlineLevel` собственост на възела на §. Обосновката на стила на параграфа е представена по същия начин от `Style.ParagraphFormat` собственост.
Имайте предвид, че вградените стилове на заглавие като функция 1 имат задължително ниво на очертание в настройките на стила.
*(\T превключвател) * |
Този превключвател ще позволи използването на потребителски стилове при събиране на записи, които да се използват в TOC. Това често се използва заедно с \O превключвател, за да включва потребителски стилове, заедно с вградени заглавия стилове в TOC.
Параметрите на превключвателя трябва да бъдат затворени в говорните знаци. Много стилове могат да бъдат включени, за всеки стил името трябва да бъде посочено следвано от запетая последвано от нивото, че стилът трябва да се появи в `TOC` Като. По-нататъшните стилове са разделени и от запетая.
Например
{ TOC \o "1-3" \t "CustomHeading1, 1, CustomHeading2, 2"}
ще използва съдържание, стилирано с Custom Heading1 като съдържание от ниво 1 в `TOC` и Custom Heading2 като ниво 2.
| | **Use TC Fields***(\F и \L превключватели) * |
В по- стари версии на Microsoft Word, единственият начин да се изгради `TOC` е използването на TC полета. Тези полета се вкарват скрити в документа дори когато са показани кодове на полетата. Те включват текста, който трябва да бъде показан във вписването и `TOC` е построен от тях. Тази функционалност сега не се използва много често, но все още може да бъде полезно в някои случаи да се включат записи в `TOC` които не се виждат в документа.
При въвеждането на тези полета се появяват скрити дори когато се показват кодове на полета. Те не могат да бъдат видени без да покажат скрито съдържание. За да видите тези полета, трябва да изберете форматиране на параграфа.
![working-with-table-of-contents-paragraph-settings](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-4.png)
Тези полета могат да бъдат включени в документ на всяка позиция като всяка друга област и са представени от `FieldType.FieldTOCEntry` Изброяване.Превключвател \F в a `TOC` се използва за уточняване, че TC полетата следва да се използват като вписвания. Самият превключвател без допълнителен идентификатор означава, че всяко поле на TC в документа ще бъде включено. Всеки допълнителен параметър, често една буква, ще посочи, че само TC полета, които имат съвпадение \f превключвател ще бъдат включени в TOC. Например *
{ TOC \f t }
ще включва само TC полета като
{ TC \f t }
На `TOC` областта също така има свързан превключвател, на прекъсвача ...\L... , че са включени само TC поле с нива в рамките на посочения диапазон.
![todo:image_alt_text](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-5.png)
На `TC` Самите полета могат да имат няколко превключвателя. Това са:
- По-горе е обяснено. *
- * \L го определя кое ниво в `TOC` Това поле ще се появи. A `TOC` който използва същия превключвател, ще включва това поле на TC само ако е в рамките на определения обхват. *
- _\ N ... Номериране на страницата за това `TOC` записът не е показан. В следващия раздел може да бъде намерен примерен код за това как да се вмъкне TC полета.
|Външни прекъсвачи
Превключване | Описание |
---|---|
Omit Page Numbers *(\N Switch) * |
Този превключвател се използва за скриване на номерата на страниците за определени нива на TOC. Например можете да дефинирате |
{TOC \o "1-4" \n "3-4" }
и номерата на страниците на влизанията на нива 3 и 4 ще бъдат скрити заедно с водещите точки (ако има такива). За да се определи само едно ниво на диапазон все още трябва да се използва, например ...1-1... ще изключи номера на страница само за първото ниво.
Доставянето на обхват на ниво няма да пропусне номерата на страниците за всички нива в TOC. Това е полезно за задаване при експортиране на документ в HTML или подобен формат. Това е така, защото HTML базирани формати не са имали никаква концепция страница и по този начин не се нуждаят от всяка страница невалидни.
![todo:image_alt_text](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-6.png)
| | **Insert As Hyperlinks***(\H Switch) * |
Този превключвател посочва, че `TOC` вписванията се вмъкват като хипервръзки. При разглеждане на документ в Microsoft Word Тези записи все още ще се появяват като нормален текст вътре в `TOC` но са хипервръзки и по този начин може да се използва за навигация към позицията на оригиналния запис в документа чрез използване на * Ctrl + Left Click* in Microsoft Word. Когато този превключвател е включен, тези връзки се запазват и в други формати. Например в HTML базирани формати, включително EPUB и конвертирани формати като PDF и XPS те ще бъдат изнесени като работни връзки.
Без този ключ `TOC` във всички тези изходи ще бъдат изнесени като обикновен текст и няма да демонстрират това поведение. Ако документ е отворен в MS Word, текстът на записа също няма да може да се кликне по този начин, но номерата на страницата все още могат да се използват за навигация към оригиналния запис.
![working-with-table-of-contents-titles](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-7.png)
| | **Set Separator Character***(\P Switch) * |
Този превключвател позволява лесно да се промени съдържанието, разделящо заглавието на заглавието на записа и номерацията на страницата. Сепараторът, който трябва да се използва, трябва да бъде посочен след този превключвател и да бъде поставен в говорни знаци.
Противно на това, което е документирано в Office документация, може да се използва само един символ вместо до пет. Това се отнася както за MS Word, така и Aspose.Words.
Използването на този превключвател не се препоръчва, тъй като не позволява много контрол върху това, което използва за разделяне на записи и номера на страници в TOC. Вместо това се препоръчва редактиране на подходящия `TOC` стил като `StyleIdentifier.TOC1` и от там редактирайте стила на лидера с достъп до конкретни членове на шрифта и др. Повече подробности за това как да направите това може да се намери по-късно в статията.
![working-with-table-of-contents-toc](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-8.png)
| | **Preserve Tab Entries***(\W Switch) * |
Използването на този превключвател ще уточни, че всички записи, които имат символ подпрозорец, например заглавие, което има подпрозорец в края на линията, ще бъдат запазени като подходящ символ подпрозорец при населяването на TOC. Това означава, че функцията на символа подпрозорец ще присъства в `TOC` и може да се използва за форматиране на текста. Например някои записи могат да използват спирания на подпрозорците и подпрозорци за равномерното пространство на текста. Докато съответният `TOC` ниво определя еквивалентния раздел спира след това генерираното `TOC` Записите ще се появят с подобно разстояние.
В същата ситуация, ако този превключвател не е дефиниран, символите на раздела ще бъдат преобразувани в еквивалент на бяло пространство като нефункциониращи раздели. Изходът няма да изглежда както се очакваше.
![working-with-table-of-contents-aspose](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-9.png)
| | **Preserve New Line Entries***(\X Switch) * |
Подобно на превключвателя по-горе, този превключвател посочва, че позиции, простиращи се по няколко линии (като се използват нови знаци от линия, които не са отделни точки) ще бъдат запазени, тъй като те са в генерираната TOS. Например позиция, която трябва да се разпространи по няколко линии, може да използва новия символ на линия (Ctrl + Enter или `ControlChar.LineBreak`) да разделят съдържанието през различни линии. С този ключ, посочен, записът в `TOC` ще запази тези нови символи линия, както е показано по-долу.
В тази ситуация, ако превключвателят не е определен, тогава новите знаци от линия се преобразуват в едно бяло пространство.
![working-with-table-of-contents-aspose-words](/words/python-net/working-with-table-of-contents/working-with-table-of-contents-10.png)
|Вмъкване на полета TC
Можете да поставите ново TC поле на текущата позиция на DocumentBuilder като се обадя на DocumentBuilder.insert_field метод и уточняване на името на полето, както и всички ключове, които са необходими. Примерът по- долу показва как да поставите TC
поле в документа, като се използва DocumentBuilder.
Промяна на съдържанието
Форматиране на записите в TOC
не използвайте оригиналните стилове на маркираните вписвания, вместо това всяко ниво се форматира с еквивалентен TOC
стил. Например първото ниво в TOC
е форматиран с TOC1 стил, второто ниво, форматирано с TOS2 стил и така нататък. Това означава, че за да промените външния вид на TOC
Тези стилове трябва да се променят. В Aspose.Words Тези стилове са представени от местния независим StyleIdentifier.TOC1 през до StyleIdentifier.TOC9 и могат да бъдат извлечени от Document.styles събиране с помощта на тези идентификатори.
След като подходящият стил на документа е изтеглен форматирането за този стил може да бъде променено. Всякакви промени в тези стилове автоматично ще бъдат отразени в ТОК в документа. По-долу примерът променя форматиращ имот, използван в първото ниво TOC
стил.
Също така е полезно да се отбележи, че всяко пряко форматиране на параграф (определено на самия параграф, а не в стила), което трябва да бъде включено TOC
ще бъде копирано във вписването в TOC. Например, ако стилът “No 1” се използва за маркиране на съдържанието за TOC
и този стил има смел форматиране, докато параграфът също има италиански формат, директно приложен към него. Резултатът TOC
Влизането няма да бъде смело, тъй като това е част от форматирането на стила, но ще бъде италитично, тъй като това е директно форматирано на параграфа.
Можете също така да контролирате форматирането на използваните разделители между всеки запис и номера на страницата. По подразбиране това е пунктирана линия, която се разпространява в цялата страница номериране с помощта на символ подпрозорец и десен раздел стоп подредени в близост до правилния марж.
Използване на Style клас, получен за конкретния случай TOC
ниво, което искате да промените, можете също така да промените как те се появяват в документа. За да се промени как това изглежда първо Style.paragraph_format трябва да бъдат призовани да възстановят формата на параграфа за стила. От тук спиранията могат да бъдат възстановени чрез обаждане ParagraphFormat.tab_stops и съответната таблица стоп променени. Използването на същата техника, самата таб може да бъде преместена или премахната заедно. По-долу пример показва как да се промени позицията на десния раздел стоп в TOC
свързаните с това параграфи.
Премахване на съдържанието от документа
Съдържанието може да бъде премахнато от документа чрез премахване на всички намерени възли между FieldStart както и FieldEnd възел на TOC
поле. Кодът по-долу показва това. Премахване на TOC
Полето е по-просто от обикновено поле, тъй като не следим гнездата. Вместо това ще проверим FieldEnd Възелът е от тип FieldType.FIELD_TOC Което означава, че сме се сблъскали с края на сегашния TOC. Тази техника може да се използва в този случай, без да се притеснявате за всяко гнездо полета, тъй като ние можем да приемем, че всеки правилно формиран документ няма да има напълно гнездо TOC
поле вътре в друго TOC
поле.
Първо: FieldStart възли от всяка TOC
се събират и съхраняват. Посоченият TOC
След това се изброява, така че всички възли в полето се посещават и съхраняват. След това възлите се отстраняват от документа. Бъдиlow code Пробата показва как да се премахне определено TOC
от документ.
Съдържание на екстракт
Ако искате да извлечете съдържание от Word документ, може да се използва следната извадка код.
doc = aw.Document(docs_base.my_dir + "Table of contents.docx")
for field in doc.range.fields :
if (field.type == aw.fields.FieldType.FIELD_HYPERLINK) :
hyperlink = field.as_field_hyperlink()
if (hyperlink.sub_address != None and hyperlink.sub_address.find("_Toc") == 0) :
tocItem = field.start.get_ancestor(aw.NodeType.PARAGRAPH).as_paragraph()
print(tocItem.to_string(aw.SaveFormat.TEXT).strip())
print("------------------")
bm = doc.range.bookmarks.get_by_name(hyperlink.sub_address)
pointer = bm.bookmark_start.get_ancestor(aw.NodeType.PARAGRAPH).as_paragraph()
print(pointer.to_string(aw.SaveFormat.TEXT))