การทำงานกับบุ๊กมาร์ก
บุ๊กมาร์กจะระบุตำแหน่งหรือส่วนต่างๆ ในเอกสาร 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
มี Merge Field ที่ซ้อนกันในนิพจน์ (ด้านซ้ายของตัวดำเนินการ) และขึ้นอยู่กับค่าของ Merge Field ฟิลด์ 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 ]) | |