Робота з закладками
Визначаємо закладки в Microsoft Word документувати місця або фрагменти, які ви назвали і виявляти для подальшого посилання. Наприклад, ви можете використовувати закладку, щоб визначити текст, який ви хочете переглянути пізніше. Замість прокручування через документ, щоб знайти текст, ви можете перейти до нього, використовуючи діалогове вікно закладок Bookmark.
Дії, які можна виконувати за допомогою закладок Aspose.Words ті ж, як і ті, які можна виконати за допомогою Microsoft Wordй Ви можете вставити новий закладок, видалити, перемістити в закладку, отримати або встановити ім’я закладки, отримати або встановити текст, укладений в ньому. З Aspose.WordsВи також можете використовувати закладки в звітах або документах для вставки деяких даних в закладку або застосувати спеціальний формат до його вмісту. Ви також можете використовувати закладки для отримання тексту з певного розташування у вашому документі.
Вставте закладку
Зареєструватися start_bookmark і end_bookmark створити закладку, розмітивши його початок і кінець, відповідно. Не забудьте пройти однакову назву закладки до обох способів. Замітки в документі можуть перекривати і пропускати будь-який діапазон. Погано сформовані закладки або закладки з дублікатів будуть ігноруватися, коли документ зберігається.
Приклад коду показує, як створити новий закладок:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
builder.start_bookmark("My Bookmark") | |
builder.writeln("Text inside a bookmark.") | |
builder.start_bookmark("Nested Bookmark") | |
builder.writeln("Text inside a NestedBookmark.") | |
builder.end_bookmark("Nested Bookmark") | |
builder.writeln("Text after Nested Bookmark.") | |
builder.end_bookmark("My Bookmark") | |
options = aw.saving.PdfSaveOptions() | |
options.outline_options.bookmarks_outline_levels.add("My Bookmark", 1) | |
options.outline_options.bookmarks_outline_levels.add("Nested Bookmark", 2) | |
doc.save(docs_base.artifacts_dir + "WorkingWithBookmarks.create_bookmark.pdf", options) |
Отримувати закладки
Іноді необхідно отримати збірку закладок до неї через закладки або для інших цілей. Використання Node.range майно, піддану будь-яким документом, що повертає Range об’єкт, що представляє частину документа, що міститься в цій вершині. Використовуйте цей об’єкт для отримання BookmarkCollection а потім скористайтеся індексатором збору, щоб отримати конкретну закладку.
Приклад коду показує, як отримати закладки з колекції закладок:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Bookmarks.docx") | |
# By index: | |
bookmark1 = doc.range.bookmarks[0] | |
# By name: | |
bookmark2 = doc.range.bookmarks.get_by_name("MyBookmark3") |
Приклад коду показує, як отримати або встановити назву закладки та текст:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Bookmarks.docx") | |
bookmark = doc.range.bookmarks.get_by_name("MyBookmark1") | |
name = bookmark.name | |
text = bookmark.text | |
bookmark.name = "RenamedBookmark" | |
bookmark.text = "This is a new bookmarked text." |
Приклад коду показує, як записати таблицю:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
builder.start_table() | |
builder.insert_cell() | |
builder.start_bookmark("MyBookmark") | |
builder.write("This is row 1 cell 1") | |
builder.insert_cell() | |
builder.write("This is row 1 cell 2") | |
builder.end_row() | |
builder.insert_cell() | |
builder.writeln("This is row 2 cell 1") | |
builder.insert_cell() | |
builder.writeln("This is row 2 cell 2") | |
builder.end_row() | |
builder.end_table() | |
builder.end_bookmark("MyBookmark") |
Якщо ви зміните ім’я закладки на ім’я, яка вже існує в документі, не буде сформована помилка і тільки перший заклад буде зберігатися при збереженні документа.
Зауважте, що деякі закладки в документі призначають у вигляді полів. Переміщення такої закладки та вставки тексту вводиться текст у форму поле коду. Хоча це не визнає поле форми, вставлений текст не буде видно, оскільки він стає частиною поля.
Приклад наступного коду показує, як отримати доступ до стовпців закладеного столу:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
for bookmark in doc.range.bookmarks : | |
print("Bookmark: " + bookmark.name + " (Column)" if bookmark.is_column else "") | |
if (bookmark.is_column) : | |
row = bookmark.bookmark_start.get_ancestor(aw.NodeType.ROW).as_row() | |
if (bookmark.first_column < row.cells.count) : | |
print(row.cells[bookmark.first_column].get_text().trim_end(aw.ControlChar.CELL_CHAR)) | |
Перемістити в закладку
Якщо вам необхідно вставити багатий контент (не просто звичайний текст) в закладку, необхідно використовувати move_to_bookmark перемістити курсор в закладку, а потім використовувати DocumentBuilder’s методи і властивості вставити вміст.
Показати вміст закладок
Весь закладок (* в тому числі закладений вміст*) може бути інкапсульований в межах дійсної частини IF
використання поля Aspose.Wordsй Це може бути таким чином, що IF
поле містить гніздований поле Мержа в експресії (* Відправлення Оператора*) і в залежності від значення Поле Мерж, IF
поле показує або приховує зміст закладки у документі Word.
Приклад коду показує, як показати / сховати закладки:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Bookmarks.docx") | |
self.show_hide_bookmarked_content(doc, "MyBookmark1", False) | |
doc.save(docs_base.artifacts_dir + "WorkingWithBookmarks.show_hide_bookmarks.docx") |
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
@staticmethod | |
def show_hide_bookmarked_content(doc : aw.Document, bookmarkName : str, showHide : bool) : | |
bm = doc.range.bookmarks.get_by_name(bookmarkName) | |
builder = aw.DocumentBuilder(doc) | |
builder.move_to_document_end() | |
# IF "MERGEFIELD bookmark" = "True" "" "" | |
field = builder.insert_field("IF \"", None) | |
builder.move_to(field.start.next_sibling) | |
builder.insert_field("MERGEFIELD " + bookmarkName + "", None) | |
builder.write("\" = \"True\" ") | |
builder.write("\"") | |
builder.write("\"") | |
builder.write(" \"\"") | |
currentNode = field.start | |
flag = True | |
while (currentNode != None and flag) : | |
if (currentNode.node_type == aw.NodeType.RUN) : | |
if (currentNode.to_string(aw.SaveFormat.TEXT).strip() == "\"") : | |
flag = False | |
nextNode = currentNode.next_sibling | |
bm.bookmark_start.parent_node.insert_before(currentNode, bm.bookmark_start) | |
currentNode = nextNode | |
endNode = bm.bookmark_end | |
flag = True | |
while (currentNode != None and flag) : | |
if (currentNode.node_type == aw.NodeType.FIELD_END) : | |
flag = False | |
nextNode = currentNode.next_sibling | |
bm.bookmark_end.parent_node.insert_after(currentNode, endNode) | |
endNode = currentNode | |
currentNode = nextNode | |
doc.mail_merge.execute([ bookmarkName ], [ showHide ]) | |