แยกเอกสาร
Splitting หรือ แยกเอกสาร เป็นกระบวนการแบ่งเอกสารขนาดใหญ่ออกเป็นไฟล์ขนาดเล็กจำนวนมากขึ้น มีเหตุผลหลายประการในการแบ่งไฟล์ ตัวอย่างเช่น คุณต้องการเพียงบางหน้าจากเอกสารที่ระบุ ไม่ใช่ทั้งหน้า หรือด้วยเหตุผลด้านความเป็นส่วนตัว คุณต้องการแชร์เฉพาะบางส่วนของเอกสารกับผู้อื่น ด้วยคุณสมบัติการแยก คุณสามารถรับเฉพาะส่วนที่จำเป็นของเอกสาร และดำเนินการที่จำเป็นกับส่วนเหล่านั้น เช่น เพื่อมาร์กอัป บันทึก หรือส่ง
Aspose.Words มอบวิธีที่มีประสิทธิภาพในการแบ่งเอกสารหนึ่งฉบับออกเป็นหลายเอกสารตามหัวข้อหรือส่วนต่างๆ คุณยังสามารถแบ่งเอกสารตามหน้าหรือตามช่วงหน้าได้ ตัวเลือกการแยกทั้งสองจะอธิบายไว้ในบทความนี้
หากต้องการแยกเอกสารเป็นไฟล์ขนาดเล็กโดยใช้ Aspose.Words คุณต้องทำตามขั้นตอนเหล่านี้:
- โหลดเอกสารในรูปแบบที่รองรับ
- แยกเอกสาร
- บันทึกเอกสารผลลัพธ์
หลังจากที่คุณแยกเอกสาร คุณจะสามารถเปิดเอกสารเอาต์พุตทั้งหมดที่จะเริ่มต้นด้วยหน้า ข้อความ ฯลฯ ที่ต้องการ
ลองออนไลน์
คุณสามารถลองใช้ฟังก์ชันนี้กับ ตัวแยกเอกสารออนไลน์ฟรี ของเราได้
แยกเอกสารโดยใช้เกณฑ์ที่แตกต่างกัน
Aspose.Words ช่วยให้คุณสามารถแบ่งเอกสาร EPUB หรือ HTML ออกเป็นบทต่างๆ ตามเกณฑ์ต่างๆ ในกระบวนการนี้ สไตล์และโครงร่างของเอกสารต้นทางจะถูกรักษาไว้สำหรับเอกสารเอาท์พุต
คุณสามารถระบุเกณฑ์ได้โดยใช้การแจงนับ DocumentSplitCriteria ดังนั้นคุณจึงสามารถแบ่งเอกสารออกเป็นบทๆ ได้โดยใช้เกณฑ์ข้อใดข้อหนึ่งต่อไปนี้ หรือรวมเกณฑ์มากกว่าหนึ่งเกณฑ์เข้าด้วยกัน:
- ย่อหน้าหัวเรื่อง
- ตัวแบ่งส่วน
- ตัวแบ่งคอลัมน์
- ตัวแบ่งหน้า
เมื่อบันทึกเอาต์พุตเป็น HTML Aspose.Words จะบันทึกแต่ละบทเป็นไฟล์ HTML แยกกัน เป็นผลให้เอกสารถูกแบ่งออกเป็นไฟล์ HTML หลายไฟล์ เมื่อบันทึกเอาต์พุตเป็น EPUB Aspose.Words จะบันทึกผลลัพธ์เป็นไฟล์ EPUB ไฟล์เดียว โดยไม่คำนึงถึงค่า DocumentSplitCriteria
ที่คุณใช้ ดังนั้น การใช้ DocumentSplitCriteria สำหรับเอกสาร EPUB จะส่งผลต่อลักษณะที่ปรากฏของเนื้อหาในแอปพลิเคชันโปรแกรมอ่านเท่านั้น โดยเนื้อหาจะถูกแบ่งออกเป็นบทต่างๆ และเอกสารจะไม่ปรากฏต่อเนื่องอีกต่อไป
ในส่วนนี้ เราจะพิจารณาเฉพาะเกณฑ์การแยกที่เป็นไปได้บางส่วนเท่านั้น
แยกเอกสารตามส่วนหัว
หากต้องการแบ่งเอกสารออกเป็นบทต่างๆ ตามหัวข้อ ให้ใช้ค่า HeadingParagraph ของคุณสมบัติ DocumentSplitCriteria
หากคุณต้องการแบ่งเอกสารตามระดับเฉพาะของย่อหน้าส่วนหัว เช่น ส่วนหัว 1, 2 และ 3 ให้ใช้คุณสมบัติ DocumentSplitHeadingLevel ด้วย ผลลัพธ์จะถูกแบ่งตามย่อหน้าที่จัดรูปแบบตามระดับหัวเรื่องที่ระบุ
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารออกเป็นส่วนเล็กๆ ตามหัวข้อ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Open a Word document | |
Document doc = new Document(dataDir + "Test File (doc).docx"); | |
HtmlSaveOptions options = new HtmlSaveOptions(); | |
// Split a document into smaller parts, in this instance split by heading | |
options.DocumentSplitCriteria = DocumentSplitCriteria.HeadingParagraph; | |
// Save the output file | |
doc.Save(dataDir + "SplitDocumentByHeadings_out.html", options); |
โปรดทราบว่าสำหรับเกณฑ์นี้ Aspose.Words รองรับเฉพาะการบันทึกเป็นรูปแบบ HTML เมื่อทำการแยก
เมื่อบันทึกเป็น EPUB เอกสารจะไม่แบ่งออกเป็นหลายไฟล์ และจะมีไฟล์เอาต์พุตเพียงไฟล์เดียวเท่านั้น
แยกเอกสารตามส่วน
Aspose.Words ยังช่วยให้คุณใช้ตัวแบ่งส่วนเพื่อแยกเอกสารและบันทึกเป็น HTML ได้ เพื่อจุดประสงค์นี้ ให้ใช้ SectionBreak เป็น DocumentSplitCriteria:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
HtmlSaveOptions options = new HtmlSaveOptions(); | |
options.DocumentSplitCriteria = DocumentSplitCriteria.HeadingParagraph; |
มีอีกวิธีหนึ่งในการแบ่งเอกสารต้นฉบับออกเป็นเอกสารเอาต์พุตหลายชุด และคุณสามารถเลือกรูปแบบเอาต์พุตใดก็ได้ที่ Aspose.Words รองรับ
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารออกเป็นส่วนเล็กๆ ตามตัวแบ่งส่วน (โดยไม่ต้องใช้คุณสมบัติ DocumentSplitCriteria
):
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Open a Word document | |
Document doc = new Document(dataDir + "TestFile (Split).docx"); | |
for (int i = 0; i < doc.Sections.Count; i++) | |
{ | |
// Split a document into smaller parts, in this instance split by section | |
Section section = doc.Sections[i].Clone(); | |
Document newDoc = new Document(); | |
newDoc.Sections.Clear(); | |
Section newSection = (Section) newDoc.ImportNode(section, true); | |
newDoc.Sections.Add(newSection); | |
// Save each section as a separate document | |
newDoc.Save(dataDir + $"SplitDocumentBySectionsOut_{i}.docx"); | |
} |
แบ่งตามเพจ
คุณยังสามารถแยกเอกสารทีละหน้า ตามช่วงหน้า หรือเริ่มต้นด้วยหมายเลขหน้าที่ระบุได้ ในกรณีเช่นนี้ วิธี ExtractPages สามารถทำงานได้
ส่วนนี้จะอธิบายกรณีการใช้งานต่างๆ ของการแบ่งเอกสารโดยเพจโดยใช้คลาส Document และวิธีการ ExtractPages
แยกหน้าเอกสารตามหน้า
Aspose.Words ช่วยให้คุณสามารถแบ่งเอกสารหลายหน้าทีละหน้า
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารและบันทึกแต่ละหน้าเป็นเอกสารแยกต่างหาก:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(MyDir + "Big document.docx"); | |
int pageCount = doc.PageCount; | |
for (int page = 0; page < pageCount; page++) | |
{ | |
// Save each page as a separate document. | |
Document extractedPage = doc.ExtractPages(page, 1); | |
extractedPage.Save(ArtifactsDir + $"SplitDocument.PageByPage_{page + 1}.docx"); | |
} |
แบ่งเอกสารตามช่วงหน้า
Aspose.Words อนุญาตให้แยกเอกสารหลายหน้าตามช่วงหน้า คุณสามารถแบ่งไฟล์หนึ่งไฟล์ออกเป็นหลายไฟล์โดยมีช่วงหน้าต่างๆ หรือเพียงเลือกช่วงเดียวและบันทึกเฉพาะส่วนนี้ของเอกสารต้นฉบับ โปรดทราบว่าคุณสามารถเลือกช่วงหน้าตามหมายเลขหน้าสูงสุดและต่ำสุดของเอกสารได้
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแบ่งเอกสารออกเป็นส่วนเล็ก ๆ ตามช่วงหน้าด้วยดัชนีเริ่มต้นและสิ้นสุดเฉพาะ:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(MyDir + "Big document.docx"); | |
// Get part of the document. | |
Document extractedPages = doc.ExtractPages(3, 6); | |
extractedPages.Save(ArtifactsDir + "SplitDocument.ByPageRange.docx"); |
ตัวเลือกการโทรกลับเพื่อบันทึกเอกสาร
คุณสามารถใช้คุณสมบัติ DocumentPartSavingCallback เพื่อควบคุมวิธีที่ Aspose.Words บันทึกส่วนของเอกสารเมื่อเอกสารนี้ถูกส่งออกเป็นรูปแบบ HTML คุณสมบัตินี้ช่วยให้คุณสามารถเปลี่ยนชื่อไฟล์เอาต์พุตหรือแม้กระทั่งเปลี่ยนเส้นทางไปยังสตรีมที่กำหนดเองได้
โปรดทราบว่าการโทรกลับนี้ไม่มีประโยชน์เมื่อบันทึกเป็น EPUB เนื่องจากส่วนที่ส่งออกทั้งหมดจะต้องบันทึกลงในคอนเทนเนอร์เดียว นั่นคือไฟล์ .epub ดังนั้นจึงไม่รองรับการเปลี่ยนเส้นทางสตรีม และเอฟเฟกต์ของการเปลี่ยนชื่อจะไม่ปรากฏให้เห็นเนื่องจากการเปลี่ยนชื่อไฟล์ภายในคอนเทนเนอร์
รวมเอกสารแยกกับเอกสารอื่น
Aspose.Words ช่วยให้คุณสามารถรวมเอกสารแยกเอาต์พุตกับเอกสารอื่นเพื่อสร้างเอกสารใหม่ สิ่งนี้สามารถเรียกได้ว่าเป็นการรวมเอกสาร
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการผสานเอกสารที่แยกกับเอกสารอื่น:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
public static void MergeDocuments(string dataDir) | |
{ | |
// Find documents using for merge | |
FileSystemInfo[] documentPaths = new DirectoryInfo(dataDir) | |
.GetFileSystemInfos("SplitDocumentPageByPageOut_*.docx").OrderBy(f => f.CreationTime).ToArray(); | |
string sourceDocumentPath = | |
Directory.GetFiles(dataDir, "SplitDocumentPageByPageOut_1.docx", SearchOption.TopDirectoryOnly)[0]; | |
// Open the first part of the resulting document | |
Document sourceDoc = new Document(sourceDocumentPath); | |
// Create a new resulting document | |
Document mergedDoc = new Document(); | |
DocumentBuilder mergedDocBuilder = new DocumentBuilder(mergedDoc); | |
// Merge document parts one by one | |
foreach (FileSystemInfo documentPath in documentPaths) | |
{ | |
if (documentPath.FullName == sourceDocumentPath) | |
continue; | |
mergedDocBuilder.MoveToDocumentEnd(); | |
mergedDocBuilder.InsertDocument(sourceDoc, ImportFormatMode.KeepSourceFormatting); | |
sourceDoc = new Document(documentPath.FullName); | |
} | |
// Save the output file | |
mergedDoc.Save(dataDir + "MergeDocuments_out.docx"); | |
} |