Работа с отметки

Отметките се идентифицират в Microsoft Word документира местата или фрагментите, които назовавате и идентифицирате за бъдеща справка. Например, може да използвате отметки, за да идентифицирате текста, който искате да преразгледате по - късно. Вместо да превъртате през документа, за да намерите текста, можете да отидете до него, като използвате диалоговия прозорец “Отметки.”

Действията, които могат да се извършват с отметки 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 методи и свойства за вмъкване на съдържание.

Показване съдържанието на отметките

Цялата отметки (* включително отметките) могат да бъдат капсулирани в рамките на True част на IF поле за използване Aspose.Words. Може да бъде по такъв начин, че IF поле съдържа гнездящо сливане поле в израза (* Left of Operator*) и в зависимост от стойността на Сливане поле, IF полето показва или скрива съдържанието на Отметките в Word Document.

Следният пример с код показва как да се показват/ скрият отметките:

# 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 ])