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

Splitting или split a document е процес на разделяне на голям документ на по-голям брой по-малки файлове. Има различни причини за разделяне на файл. Например, трябва само няколко страници от конкретен документ, а не цялата. Или от съображения за поверителност искате да споделите само някои части от документ с други хора. С функцията за разделяне можете да получите само необходимите части от документа и да извършите необходимите действия с тях, например да маркирате, запишете или изпратите.

Aspose.Words ви предоставя ефективен начин да разделите един документ на няколко документа по заглавия или раздели. Можете също да разделите документ по страници или по диапазони от страници. И двете опции за разделяне ще бъдат описани в тази статия.

За да разделите документ на по-малки файлове, като използвате Aspose.Words, трябва да следвате тези стъпки.:

  1. Заредете документа във всеки поддържан формат.
  2. Разделете документа.
  3. Запазване на изходните документи.

След като разделите документ, ще можете да отворите всички изходни документи, които ще започнат с необходимите страници, текст и т.н.

Разделяне на документ по различни критерии

Aspose.Words позволява да разделите EPUB или HTML документи в глави според различни критерии. В процеса стилът и оформлението на изходния документ се запазват за изходните документи.

Можете да зададете критерии, като използвате изброяването DocumentSplitCriteria. Така че можете да разделите документ на глави, като използвате един от следните критерии или да комбинирате повече от един критерий заедно:

  • Заглавие параграф,
  • прекъсване на секция,
  • прекъсване на колона,
  • прекъсване на страницата.

Когато записвате резултата в HTML, Aspose.Words запишете всяка отделна глава като отделен HTML файл. В резултат на това документът ще бъде разделен на няколко HTML файла. Когато записвате резултата в EPUB, Aspose.Words запишете резултата в един файл EPUB, независимо от стойността DocumentSplitCriteria, която сте използвали. Така че, използването на DocumentSplitCriteria за EPUB документи засяга само външния вид на съдържанието им в читателските приложения: съдържанието ще бъде разделено на глави и документът вече няма да изглежда непрекъснат.

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

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

Aspose.Words също така ви позволява да използвате прекъсвания на раздели, за да разделите документи и да ги запишете на HTML. За тази цел използвайте SectionBreak като DocumentSplitCriteria:

Следващият пример за код показва как да разделите документ на по-малки части по раздели (без да използвате свойството DocumentSplitCriteria):

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
// Open a Word document
auto doc = System::MakeObject<Document>(inputDataDir + u"TestFile (Split).docx");
for (int i = 0; i < doc->get_Sections()->get_Count(); i++)
{
// Split a document into smaller parts, in this instance split by section
auto section = doc->get_Sections()->idx_get(i)->Clone();
auto newDoc = System::MakeObject<Document>();
newDoc->get_Sections()->Clear();
auto newSection = System::StaticCast<Section>(newDoc->ImportNode(section, true));
newDoc->get_Sections()->Add(newSection);
// Save each section as a separate document
newDoc->Save(outputDataDir + u"SplitDocumentBySectionsOut_" + System::Convert::ToString(i) + u".docx");
}

Раздели по страници

Можете също да разделите страница на документ по страница, по обхвати на страници или да започнете с посочените номера на страници. В този случай методът ExtractPages може да свърши работата.

Този раздел описва няколко случая на използване на разделяне на документи чрез пейджинг, като се използва клас Document и метод ExtractPages.

Разделете страница на документ по страница

Aspose.Words Позволява ви да разделите документ с няколко страници страница по страница.

Следващият пример за код показва как да разделите документ и да запишете всяка страница като отделен документ:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>(MyDir + u"Big document.docx");
int pageCount = doc->get_PageCount();
for (int page = 0; page < pageCount; page++)
{
// Save each page as a separate document.
SharedPtr<Document> extractedPage = doc->ExtractPages(page, 1);
extractedPage->Save(ArtifactsDir + String::Format(u"SplitDocument.PageByPage_{0}.docx", page + 1));
}

Разделяне на документ по обхвати на страници

Aspose.Words позволява разделяне на документ от няколко страници по диапазони от страници. Можете да разделите един файл на няколко файла с различни диапазони от страници или просто да изберете един диапазон и да запишете само тази част от документа източник. Обърнете внимание, че можете да изберете диапазона от страници според максималния и минималния номер на страница на документ.

Следващият пример за код показва как да разделите документ на по-малки части по диапазон от страници с конкретни начални и крайни индекси:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
auto doc = MakeObject<Document>(MyDir + u"Big document.docx");
// Get part of the document.
SharedPtr<Document> extractedPages = doc->ExtractPages(3, 6);
extractedPages->Save(ArtifactsDir + u"SplitDocument.ByPageRange.docx");

Обединяване на разделения документ с друг документ

Aspose.Words Позволява ви да обедините изходния разделен документ с друг документ, за да оформите нов документ. Това може да се нарече сливане на документи.

Следващият пример за код показва как да обедините разделен документ с друг документ:

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
// Create a new resulting document
auto mergedDoc = System::MakeObject<Document>();
auto mergedDocBuilder = System::MakeObject<DocumentBuilder>(mergedDoc);
// Merge document parts one by one
for (int idx = 1; idx <= 13; idx++)
{
System::String documentPath = inputDataDir + u"SplitDocumentPageByPageOut_" + System::Convert::ToString(idx) + u".docx";
auto sourceDoc = System::MakeObject<Document>(documentPath);
mergedDocBuilder->MoveToDocumentEnd();
mergedDocBuilder->InsertDocument(sourceDoc, ImportFormatMode::KeepSourceFormatting);
}
mergedDoc->Save(outputDataDir + u"MergeDocuments_out.docx");