تقسیم یک سند
Splitting یا split a document فرآیند شکستن یک سند بزرگ به تعداد بیشتری از فایل های کوچکتر است. دلایل مختلفی برای تقسیم یک فایل وجود دارد. به عنوان مثال، شما فقط به چند صفحه از یک سند خاص نیاز دارید و نه کل آن. یا به دلایل حریم خصوصی، شما می خواهید فقط برخی از بخش های یک سند را با دیگران به اشتراک بگذارید. با ویژگی تقسیم، شما می توانید تنها بخش های مورد نیاز سند را دریافت کنید و اقدامات لازم را با آنها انجام دهید، به عنوان مثال، برای علامت گذاری، ذخیره یا ارسال.
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-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"); |
گزینه Callback برای ذخیره یک سند
شما می توانید از ویژگی 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-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"); | |
} |