Навігація з куратором
Під час роботи з документом, навіть якщо це короткий або довгий, вам потрібно буде орієнтуватися через ваш документ. Навігація з віртуальним курсором представляє можливість навігації між різними вузлами в документі.
У короткому документі, що переміщається в документі, простий, як ви можете перемістити точку вставки навіть, використовуючи клавіші з стрілками клавіатури або натиснувши кнопку миші, щоб знайти точку вставки, де ви хочете. Але один раз у вас є великий документ, який має багато сторінок, ці основні методи будуть недостатньо.
Ця стаття пояснює, як перемістити в документі і навігувати віртуальним курсором на різні частини.
Виявлення позицій поточного квадроцикла
Перед тим як розпочати процес навігації через ваш документ, вам потрібно буде отримати вузол, який в даний час вибрано. Ви можете отримати точну позицію курсора на вибраному вершині, використовуючи current_node майно. Крім того, замість отримання поточного вузла ви можете отримати в даний час вибраний пункт або в даний час вибраний розділ, використовуючи current_paragraph і current_section властивості.
Будь-які операції вставки ви виконуєте за допомогою DocumentBuilder буде вставлятися до current_nodeй Коли поточний пункт порожній або курсор розміщується безпосередньо перед закінченням пункту, то current_node повертає None.
Навігаційні методи в документі
Якщо ви встановите текст, важливо знати, як навігувати свій документ і де саме його переміщати. Aspose.Words дозволяє пересуватися в документі і орієнтуватися на її різні розділи і частини – це схоже на функціональність Панель навігації в Microsoft Word щоб перейти на сторінку або заголовок у документі Word без прокрутки.
Головний метод полягає в тому, щоб мати можливість перемістити позицію курсора на певну вершину у вашому документі, ви можете досягти цього за допомогою використання move_to метод.
Приклад наступного коду показує, як перемістити DocumentBuilder до різних вузлів в документі:
# 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) | |
# Start a bookmark and add content to it using a DocumentBuilder. | |
builder.start_bookmark("MyBookmark") | |
builder.writeln("Bookmark contents.") | |
builder.end_bookmark("MyBookmark") | |
# The node that the DocumentBuilder is currently at is past the boundaries of the bookmark. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_end, builder.current_paragraph.first_child) | |
# If we wish to revise the content of our bookmark with the DocumentBuilder, we can move back to it like this. | |
builder.move_to_bookmark("MyBookmark") | |
# Now we're located between the bookmark's BookmarkStart and BookmarkEnd nodes, so any text the builder adds will be within it. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_start, builder.current_paragraph.first_child) | |
# We can move the builder to an individual node, | |
# which in this case will be the first node of the first paragraph, like this. | |
builder.move_to(doc.first_section.body.first_paragraph.get_child_nodes(aw.NodeType.ANY, False)[0]) | |
self.assertEqual(aw.NodeType.BOOKMARK_START, builder.current_node.node_type) | |
self.assertTrue(builder.is_at_start_of_paragraph) | |
# A shorter way of moving the very start/end of a document is with these methods. | |
builder.move_to_document_end() | |
self.assertTrue(builder.is_at_end_of_paragraph) | |
builder.move_to_document_start() | |
self.assertTrue(builder.is_at_start_of_paragraph) |
Але крім основного move_to метод, є більш специфічні.
Навігація до початку або закінчення документа
Ви можете перейти до початку або закінчення вашого документа, використовуючи move_to_document_start і move_to_document_end методи.
Приклад наступного коду показує, як перемістити позицію курсора до початку або кінця документа:
# 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) | |
# Move the cursor position to the beginning of your document. | |
builder.move_to_document_start() | |
print("\nThis is the beginning of the document.") | |
# Move the cursor position to the end of your document. | |
builder.move_to_document_end() | |
print("\nThis is the end of the document.") |
Navigate З закладками
Ви можете відмітити місце, яке ви хочете знайти і переїхати до неї знову легко. Ви можете вставити як багато закладок у ваш документ, як ви хочете, а потім навігувати через них, виявляти закладки з унікальними іменами. Ви можете перемістити закладку за допомогою закладки move_to_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) | |
# Start a bookmark and add content to it using a DocumentBuilder. | |
builder.start_bookmark("MyBookmark") | |
builder.writeln("Bookmark contents.") | |
builder.end_bookmark("MyBookmark") | |
# The node that the DocumentBuilder is currently at is past the boundaries of the bookmark. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_end, builder.current_paragraph.first_child) | |
# If we wish to revise the content of our bookmark with the DocumentBuilder, we can move back to it like this. | |
builder.move_to_bookmark("MyBookmark") | |
# Now we're located between the bookmark's BookmarkStart and BookmarkEnd nodes, so any text the builder adds will be within it. | |
self.assertEqual(doc.range.bookmarks[0].bookmark_start, builder.current_paragraph.first_child) | |
# We can move the builder to an individual node, | |
# which in this case will be the first node of the first paragraph, like this. | |
builder.move_to(doc.first_section.body.first_paragraph.get_child_nodes(aw.NodeType.ANY, False)[0]) |
Навігація до таблиць клітин
Ви можете перемістити в настільну клітинку за допомогою move_to_cell метод. Цей метод дозволить вам навігувати курсор в будь-яку клітинку в певному столі. Крім того, ви можете вказати індекс, щоб перемістити курсор на будь-яку позицію або зазначений характер в комірці в межах комірки move_to_cell метод.
Приклад наступного коду показує, як перемістити позицію курсора до вказаної таблиці комірки:
# 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 + "Tables.docx") | |
builder = aw.DocumentBuilder(doc) | |
# Move the builder to row 3, cell 4 of the first table. | |
builder.move_to_cell(0, 2, 3, 0) | |
builder.write("\nCell contents added by DocumentBuilder") | |
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table() | |
self.assertEqual(table.rows[2].cells[3], builder.current_node.parent_node.parent_node) | |
self.assertEqual("Cell contents added by DocumentBuilderCell 3 contents\a", table.rows[2].cells[3].get_text().strip()) |
Навігація до поля
Ви можете переїхати на конкретне поле у вашому документі, використовуючи move_to_field метод. Крім того, ви можете перемістити в певну область злиття, використовуючи move_to_merge_field метод.
Приклад коду показує, як перемістити курсор конструктора документів на конкретне поле:
# 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) | |
# Insert a field using the DocumentBuilder and add a run of text after it. | |
field = builder.insert_field("MERGEFIELD field") | |
builder.write(" Text after the field.") | |
# The builder's cursor is currently at end of the document. | |
self.assertIsNone(builder.current_node) | |
# We can move the builder to a field like this, placing the cursor at immediately after the field. | |
builder.move_to_field(field, True) | |
# Note that the cursor is at a place past the FieldEnd node of the field, meaning that we are not actually inside the field. | |
# If we wish to move the DocumentBuilder to inside a field, | |
# we will need to move it to a field's FieldStart or FieldSeparator node using the DocumentBuilder.move_to() method. | |
self.assertEqual(field.end, builder.current_node.previous_sibling) | |
builder.write(" Text immediately after the field.") |
Навігація на заголовок або нижній колонтитул
Ви можете перейти до початку заголовка або нижній колонтитул за допомогою move_to_header_footer метод
Приклад коду показує, як перемістити курсор конструктора документів на заголовок документа або нижній колонтитул:
Навігація до розділу або пункту
Ви можете переходити в конкретну секцію або абзац за допомогою move_to_paragraph або move_to_section методи. Крім того, ви можете вказати індекс, щоб перемістити курсор на будь-яку позицію або зазначений характер в пункті в межах пункту move_to_paragraph метод.
Наприклад, наступний код показує, як перейти до певного розділу та конкретного пункту у документі:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
doc.append_child(aw.Section(doc)) | |
# Move a DocumentBuilder to the second section and add text. | |
builder = aw.DocumentBuilder(doc) | |
builder.move_to_section(1) | |
builder.writeln("Text added to the 2nd section.") | |
# Create document with paragraphs. | |
doc = aw.Document(docs_base.my_dir + "Paragraphs.docx") | |
paragraphs = doc.first_section.body.paragraphs | |
self.assertEqual(22, paragraphs.count) | |
# When we create a DocumentBuilder for a document, its cursor is at the very beginning of the document by default, | |
# and any content added by the DocumentBuilder will just be prepended to the document. | |
builder = aw.DocumentBuilder(doc) | |
self.assertEqual(0, paragraphs.index_of(builder.current_paragraph)) | |
# You can move the cursor to any position in a paragraph. | |
builder.move_to_paragraph(2, 10) | |
self.assertEqual(2, paragraphs.index_of(builder.current_paragraph)) | |
builder.writeln("This is a new third paragraph. ") | |
self.assertEqual(3, paragraphs.index_of(builder.current_paragraph)) |