แยกเอกสาร

Splitting หรือ แยกเอกสาร เป็นกระบวนการแบ่งเอกสารขนาดใหญ่ออกเป็นไฟล์ขนาดเล็กจำนวนมากขึ้น มีเหตุผลหลายประการในการแบ่งไฟล์ ตัวอย่างเช่น คุณต้องการเพียงบางหน้าจากเอกสารที่ระบุ ไม่ใช่ทั้งหน้า หรือด้วยเหตุผลด้านความเป็นส่วนตัว คุณต้องการแชร์เฉพาะบางส่วนของเอกสารกับผู้อื่น ด้วยคุณสมบัติการแยก คุณสามารถรับเฉพาะส่วนที่จำเป็นของเอกสาร และดำเนินการที่จำเป็นกับส่วนเหล่านั้น เช่น เพื่อมาร์กอัป บันทึก หรือส่ง

Aspose.Words มอบวิธีที่มีประสิทธิภาพในการแบ่งเอกสารหนึ่งฉบับออกเป็นหลายเอกสารตามหัวข้อหรือส่วนต่างๆ คุณยังสามารถแบ่งเอกสารตามหน้าหรือตามช่วงหน้าได้ ตัวเลือกการแยกทั้งสองจะอธิบายไว้ในบทความนี้

หากต้องการแยกเอกสารเป็นไฟล์ขนาดเล็กโดยใช้ Aspose.Words คุณต้องทำตามขั้นตอนเหล่านี้:

  1. โหลดเอกสารในรูปแบบที่รองรับ
  2. แยกเอกสาร
  3. บันทึกเอกสารผลลัพธ์

หลังจากที่คุณแยกเอกสาร คุณจะสามารถเปิดเอกสารเอาต์พุตทั้งหมดที่จะเริ่มต้นด้วยหน้า ข้อความ ฯลฯ ที่ต้องการ

แยกเอกสารโดยใช้เกณฑ์ที่แตกต่างกัน

Aspose.Words ช่วยให้คุณสามารถแบ่งเอกสาร EPUB หรือ HTML ออกเป็นบทต่างๆ ตามเกณฑ์ต่างๆ ในกระบวนการนี้ สไตล์และโครงร่างของเอกสารต้นทางจะถูกรักษาไว้สำหรับเอกสารเอาท์พุต

คุณสามารถระบุเกณฑ์ได้โดยใช้การแจงนับ DocumentSplitCriteria ดังนั้นคุณจึงสามารถแบ่งเอกสารออกเป็นบทๆ ได้โดยใช้เกณฑ์ข้อใดข้อหนึ่งต่อไปนี้ หรือรวมเกณฑ์มากกว่าหนึ่งเกณฑ์เข้าด้วยกัน:

  • ย่อหน้าหัวเรื่อง
  • ตัวแบ่งส่วน
  • ตัวแบ่งคอลัมน์
  • ตัวแบ่งหน้า

เมื่อบันทึกเอาต์พุตเป็น HTML Aspose.Words จะบันทึกแต่ละบทเป็นไฟล์ HTML แยกต่างหาก เป็นผลให้เอกสารถูกแบ่งออกเป็นไฟล์ HTML หลายไฟล์ เมื่อบันทึกเอาต์พุตเป็น EPUB Aspose.Words จะบันทึกผลลัพธ์เป็นไฟล์ EPUB ไฟล์เดียว โดยไม่คำนึงถึงค่า DocumentSplitCriteria ที่คุณใช้ ดังนั้น การใช้ DocumentSplitCriteria สำหรับเอกสาร EPUB จะส่งผลต่อลักษณะที่ปรากฏของเนื้อหาในแอปพลิเคชันโปรแกรมอ่านเท่านั้น เนื้อหาจะถูกแบ่งออกเป็นบทต่างๆ และเอกสารจะไม่ปรากฏต่อเนื่องอีกต่อไป

ในส่วนนี้ เราจะพิจารณาเฉพาะเกณฑ์การแยกที่เป็นไปได้บางส่วนเท่านั้น

แยกเอกสารตามส่วนหัว

หากต้องการแบ่งเอกสารออกเป็นบทต่างๆ ตามหัวข้อ ให้ใช้ค่า HEADING_PARAGRAPH ของคุณสมบัติ document_split_criteria

หากคุณต้องการแบ่งเอกสารตามระดับเฉพาะของย่อหน้าส่วนหัว เช่น ส่วนหัว 1, 2 และ 3 ให้ใช้คุณสมบัติ document_split_heading_level ด้วย ผลลัพธ์จะถูกแบ่งตามย่อหน้าที่จัดรูปแบบตามระดับหัวเรื่องที่ระบุ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารออกเป็นส่วนเล็กๆ ตามหัวข้อ:

# 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 + "Rendering.docx")
options = aw.saving.HtmlSaveOptions()
# Split a document into smaller parts, in this instance split by heading.
options.document_split_criteria = aw.saving.DocumentSplitCriteria.HEADING_PARAGRAPH
doc.save(docs_base.artifacts_dir + "SplitDocument.by_headings_html.html", options)

โปรดทราบว่าสำหรับเกณฑ์นี้ Aspose.Words รองรับเฉพาะการบันทึกเป็นรูปแบบ HTML เมื่อทำการแยก

เมื่อบันทึกเป็น EPUB เอกสารจะไม่แบ่งออกเป็นหลายไฟล์ และจะมีไฟล์เอาต์พุตเพียงไฟล์เดียวเท่านั้น

แยกเอกสารตามส่วน

Aspose.Words ยังช่วยให้คุณใช้ตัวแบ่งส่วนเพื่อแยกเอกสารและบันทึกเป็น HTML ได้ เพื่อจุดประสงค์นี้ ให้ใช้ SECTION_BREAK เป็น document_split_criteria:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
options = aw.saving.HtmlSaveOptions()
options.document_split_criteria = aw.saving.DocumentSplitCriteria.SECTION_BREAK

มีอีกวิธีหนึ่งในการแบ่งเอกสารต้นฉบับออกเป็นเอกสารเอาต์พุตหลายชุด และคุณสามารถเลือกรูปแบบเอาต์พุตใดก็ได้ที่ Aspose.Words รองรับ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารออกเป็นส่วนเล็กๆ ตามตัวแบ่งส่วน (โดยไม่ต้องใช้คุณสมบัติ document_split_criteria):

# 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 + "Big document.docx")
for i in range(0, doc.sections.count) :
# Split a document into smaller parts, in this instance, split by section.
section = doc.sections[i].clone()
newDoc = aw.Document()
newDoc.sections.clear()
newSection = newDoc.import_node(section, True).as_section()
newDoc.sections.add(newSection)
# Save each section as a separate document.
newDoc.save(docs_base.artifacts_dir + f"SplitDocument.by_sections_{i}.docx")

แยกตามหน้า

คุณยังสามารถแยกเอกสารทีละหน้า ตามช่วงหน้า หรือเริ่มต้นด้วยหมายเลขหน้าที่ระบุได้ ในกรณีเช่นนี้ วิธี extract_pages สามารถทำงานได้

ส่วนนี้จะอธิบายกรณีการใช้งานต่างๆ ของการแบ่งเอกสารโดยเพจโดยใช้คลาส Document และวิธีการ extract_pages

แยกหน้าเอกสารตามหน้า

Aspose.Words ช่วยให้คุณสามารถแบ่งเอกสารหลายหน้าทีละหน้า

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารและบันทึกแต่ละหน้าเป็นเอกสารแยกต่างหาก:

# 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 + "Big document.docx")
pageCount = doc.page_count
for page in range(0, pageCount) :
# Save each page as a separate document.
extractedPage = doc.extract_pages(page, 1)
extractedPage.save(docs_base.artifacts_dir + f"SplitDocument.page_by_page_{page + 1}.docx")

แบ่งเอกสารตามช่วงหน้า

Aspose.Words อนุญาตให้แยกเอกสารหลายหน้าตามช่วงหน้า คุณสามารถแบ่งไฟล์หนึ่งไฟล์ออกเป็นหลายไฟล์โดยมีช่วงหน้าต่างๆ หรือเพียงเลือกช่วงเดียวและบันทึกเฉพาะส่วนนี้ของเอกสารต้นฉบับ โปรดทราบว่าคุณสามารถเลือกช่วงหน้าตามหมายเลขหน้าสูงสุดและต่ำสุดของเอกสารได้

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารออกเป็นส่วนเล็ก ๆ ตามช่วงหน้าด้วยดัชนีเริ่มต้นและสิ้นสุดเฉพาะ:

# 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 + "Big document.docx")
# Get part of the document.
extractedPages = doc.extract_pages(3, 6)
extractedPages.save(docs_base.artifacts_dir + "SplitDocument.by_page_range.docx")

รวมเอกสารแยกกับไฟล์ {#merge-the-split-document-with-another-file} อื่น

Aspose.Words ช่วยให้คุณสามารถรวมเอกสารแยกเอาต์พุตกับเอกสารอื่นเพื่อสร้างเอกสารใหม่ สิ่งนี้สามารถเรียกได้ว่าเป็นการรวมเอกสาร

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการผสานเอกสารที่แยกกับเอกสารอื่น:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
@staticmethod
def merge_documents() :
# Find documents using for merge.
documentPaths = [f for f in os.listdir(docs_base.artifacts_dir) if (os.path.isfile(os.path.join(docs_base.artifacts_dir, f)) and f.find("SplitDocument.page_by_page_") >= 0)]
sourceDocumentPath = os.path.join(docs_base.artifacts_dir, documentPaths[0])
# Open the first part of the resulting document.
sourceDoc = aw.Document(sourceDocumentPath)
# Create a new resulting document.
mergedDoc = aw.Document()
mergedDocBuilder = aw.DocumentBuilder(mergedDoc)
# Merge document parts one by one.
for documentPath in documentPaths :
documentPath = os.path.join(docs_base.artifacts_dir, documentPath)
if (documentPath == sourceDocumentPath) :
continue
mergedDocBuilder.move_to_document_end()
mergedDocBuilder.insert_document(sourceDoc, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING)
sourceDoc = aw.Document(documentPath)
mergedDoc.save(docs_base.artifacts_dir + "SplitDocument.merge_documents.docx")