تقسيم مستند

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 يؤثر فقط على مظهر محتواها في تطبيقات القارئ: سيتم تقسيم المحتوى إلى فصول ولن يظهر المستند بعد الآن بشكل مستمر.

في هذا القسم، نعتبر فقط بعض معايير الانقسام المحتملة.

تقسيم مستند حسب العناوين

لتقسيم مستند إلى فصول حسب العناوين، استخدم قيمة HeadingParagraph لخاصية DocumentSplitCriteria.

إذا كنت بحاجة إلى تقسيم مستند إلى مستوى معين من فقرات العناوين، مثل العناوين 1 و 2 و 3، فاستخدم أيضا خاصية DocumentSplitHeadingLevel. سيتم تقسيم الإخراج على فقرات منسقة بمستوى العنوان المحدد.

يوضح مثال التعليمات البرمجية التالية كيفية تقسيم مستند إلى أجزاء أصغر حسب العنوان:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// 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.setDocumentSplitCriteria(DocumentSplitCriteria.HEADING_PARAGRAPH);
// 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-Java
// 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.setDocumentSplitCriteria(DocumentSplitCriteria.SECTION_BREAK);
// Save the output file
doc.save(dataDir + "SplitDocumentByHeadings_out.html", options);

هناك طريقة أخرى لتقسيم المستند المصدر إلى مستندات إخراج متعددة، ويمكنك اختيار أي تنسيق إخراج مدعوم بـ Aspose.Words.

يوضح مثال الكود التالي كيفية تقسيم مستند إلى أجزاء أصغر حسب فواصل الأقسام (بدون استخدام خاصية DocumentSplitCriteria):

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Word document
Document doc = new Document(dataDir + "TestFile (Split).docx");
for (int i = 0; i < doc.getSections().getCount(); i++)
{
// Split a document into smaller parts, in this instance split by section
Section section = doc.getSections().get(i).deepClone();
Document newDoc = new Document();
newDoc.getSections().clear();
Section newSection = (Section) newDoc.importNode(section, true);
newDoc.getSections().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-Java
Document doc = new Document(dataDir + "TestFile (Split).docx");
int pageCount = doc.getPageCount();
// Save each page as a separate document.
for (int page = 0; page <= pageCount; page++)
{
Document extractedPage = doc.extractPages(page, 1);
extractedPage.save(dataDir + "SplitDocumentPageByPageOut_" + (page + 1) + ".docx");
}

تقسيم مستند حسب نطاقات الصفحات

Aspose.Words يسمح بتقسيم مستند متعدد الصفحات حسب نطاقات الصفحات. يمكنك تقسيم ملف واحد إلى ملفات متعددة بنطاقات صفحات مختلفة أو ما عليك سوى تحديد نطاق واحد وحفظ هذا الجزء فقط من المستند المصدر. لاحظ أنه يمكنك اختيار نطاق الصفحات وفقا لرقم الصفحة الأقصى والأدنى للمستند.

يوضح مثال التعليمات البرمجية التالي كيفية تقسيم مستند إلى أجزاء أصغر حسب نطاق الصفحات مع فهارس بداية ونهاية محددة:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "TestFile (Split).docx");
// Get part of the document.
Document extractedPages = doc.extractPages(3, 6);
extractedPages.save(dataDir + "SplitDocumentByPageRangeOut.docx");

خيار رد الاتصال لحفظ مستند

يمكنك استخدام الخاصية DocumentPartSavingCallback للتحكم في كيفية حفظ Aspose.Words لأجزاء المستند عند تصدير هذا المستند إلى تنسيق HTML. تتيح لك هذه الخاصية إعادة تسمية ملفات الإخراج أو حتى إعادة توجيهها إلى تدفقات مخصصة.

يرجى ملاحظة أن رد الاتصال هذا ليس مفيدا عند الحفظ إلى EPUB لأنه يجب حفظ جميع أجزاء الإخراج في حاوية واحدة – ال .ملف النشر الإلكتروني. لذلك، لا يتم دعم إعادة توجيه الدفق، وتأثير إعادة التسمية غير مرئي حيث تتم إعادة تسمية الملفات داخل الحاوية.

دمج المستند المقسم مع مستند آخر

Aspose.Words تمكنك من دمج مستند تقسيم الإخراج مع مستند آخر لتشكيل مستند جديد. يمكن أن يسمى هذا دمج المستندات.

يوضح مثال الكود التالي كيفية دمج مستند مقسم مع مستند آخر:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
public static void MergeDocuments(String dataDir) throws Exception{
// Find documents using for merge
File f = new File(dataDir);
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File f, String name) {
return name.endsWith(".docx");
}
};
String[] documentPaths = f.list(filter);
String sourceDocumentPath = dataDir + documentPaths[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
for (String documentPath : documentPaths)
{
String documentPathFull = dataDir + documentPath;
if (documentPathFull == sourceDocumentPath)
continue;
mergedDocBuilder.moveToDocumentEnd();
mergedDocBuilder.insertDocument(sourceDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
sourceDoc = new Document(documentPathFull);
}
// Save the output file
mergedDoc.save(dataDir + "MergeDocuments_out.docx");
}