Разделяне на документ

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 засяга само появата на тяхното съдържание в приложения за четене: съдържанието ще бъде разделено на глави и документът вече няма да се появява непрекъснато.

В този раздел разглеждаме само някои от възможните критерии за разделяне.

Разделяне на документ по заглавия

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

Този раздел описва няколко случаи на използване на разделяне на документи чрез paged използване на 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");
}