Membagi Dokumen

Splitting atau split a document adalah proses memecah dokumen besar menjadi lebih banyak file yang lebih kecil. Ada berbagai alasan untuk membagi file. Misalnya, Anda hanya memerlukan beberapa halaman dari dokumen tertentu dan bukan keseluruhan. Atau karena alasan privasi, Anda hanya ingin membagikan beberapa bagian dokumen dengan orang lain. Dengan fitur pemisahan, Anda hanya bisa mendapatkan bagian dokumen yang diperlukan dan melakukan tindakan yang diperlukan dengannya, misalnya, untuk menandai, menyimpan, atau mengirim.

Aspose.Words memberi Anda cara yang efisien untuk membagi satu dokumen menjadi beberapa dokumen berdasarkan judul atau bagian. Anda juga dapat membagi dokumen berdasarkan halaman atau rentang halaman. Kedua opsi pemisahan akan dijelaskan dalam artikel ini.

Untuk membagi dokumen menjadi file yang lebih kecil menggunakan Aspose.Words, Anda harus mengikuti langkah-langkah berikut:

  1. Muat dokumen dalam format apa pun yang didukung.
  2. Pisahkan dokumen.
  3. Simpan dokumen keluaran.

Setelah Anda membagi dokumen, Anda akan dapat membuka semua dokumen keluaran yang akan dimulai dengan halaman, teks, dll. yang diperlukan.

Membagi Dokumen Menggunakan Kriteria Berbeda

Aspose.Words memungkinkan Anda membagi dokumen EPUB atau HTML menjadi beberapa bab menurut berbagai kriteria. Dalam prosesnya, gaya dan tata letak dokumen sumber dipertahankan untuk dokumen keluaran.

Anda dapat menentukan kriteria menggunakan pencacahan DocumentSplitCriteria. Jadi, Anda dapat membagi dokumen menjadi beberapa bab menggunakan salah satu kriteria berikut atau menggabungkan lebih dari satu kriteria menjadi satu:

  • judul paragraf,
  • istirahat bagian,
  • jeda kolom,
  • jeda halaman.

Saat menyimpan output ke HTML, Aspose.Words simpan setiap bab sebagai file HTML terpisah. Hasilnya, dokumen akan dipecah menjadi beberapa file HTML. Saat menyimpan output ke EPUB, Aspose.Words simpan hasilnya dalam satu file EPUB terlepas dari nilai DocumentSplitCriteria yang Anda gunakan. Jadi, menggunakan dokumen DocumentSplitCriteria untuk EPUB hanya memengaruhi tampilan kontennya di aplikasi pembaca: konten akan dibagi menjadi beberapa bab dan dokumen tidak lagi tampak berkelanjutan.

Di bagian ini, kami hanya mempertimbangkan beberapa kemungkinan kriteria pemisahan.

Membagi Dokumen dengan Judul

Untuk membagi dokumen menjadi beberapa bab berdasarkan judul, gunakan nilai HeadingParagraph dari properti DocumentSplitCriteria.

Jika Anda perlu membagi dokumen dengan tingkat paragraf judul tertentu, seperti judul 1, 2, dan 3, gunakan juga properti DocumentSplitHeadingLevel. Output akan dibagi dengan paragraf yang diformat dengan level heading yang ditentukan.

Contoh kode berikut menunjukkan cara membagi dokumen menjadi bagian-bagian yang lebih kecil dengan judul:

// 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);

Harap perhatikan bahwa untuk kriteria ini, Aspose.Words hanya mendukung penyimpanan ke format HTML saat pemisahan.

Saat menyimpan ke EPUB, dokumen tidak dipecah menjadi beberapa file, dan hanya akan ada satu file keluaran.

Membagi Dokumen menurut Bagian

Aspose.Words juga memungkinkan Anda menggunakan pemisah bagian untuk membagi dokumen dan menyimpannya ke HTML. Untuk tujuan ini, gunakan SectionBreak sebagai 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);

Ada cara lain untuk membagi dokumen sumber menjadi beberapa dokumen keluaran, dan Anda dapat memilih format keluaran apa pun yang didukung oleh Aspose.Words.

Contoh kode berikut menunjukkan cara membagi dokumen menjadi beberapa bagian yang lebih kecil dengan pemisah bagian (tanpa menggunakan properti 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");
}

Dibagi berdasarkan Halaman

Anda juga dapat membagi halaman dokumen berdasarkan halaman, berdasarkan rentang halaman, atau dimulai dengan nomor halaman yang ditentukan. Dalam kasus seperti itu, metode ExtractPages dapat melakukan tugasnya.

Bagian ini menjelaskan beberapa kasus penggunaan untuk membagi dokumen dengan paging menggunakan kelas Document dan metode ExtractPages.

Membagi Halaman Dokumen dengan Halaman

Aspose.Words memungkinkan Anda membagi dokumen multi-halaman halaman demi halaman.

Contoh kode berikut menunjukkan cara membagi dokumen dan menyimpan setiap halaman sebagai dokumen terpisah:

// 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");
}

Membagi Dokumen berdasarkan Rentang Halaman

Aspose.Words memungkinkan pemisahan dokumen multi-halaman berdasarkan rentang halaman. Anda dapat membagi satu file menjadi beberapa file dengan rentang halaman yang berbeda atau cukup pilih satu rentang dan simpan hanya bagian dokumen sumber ini. Perhatikan bahwa Anda dapat memilih rentang halaman sesuai dengan jumlah halaman maksimum dan minimum dokumen.

Contoh kode berikut menunjukkan cara membagi dokumen menjadi bagian-bagian yang lebih kecil berdasarkan rentang halaman dengan indeks awal dan akhir tertentu:

// 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");

Opsi Panggilan Balik untuk Menyimpan Dokumen

Anda dapat menggunakan properti DocumentPartSavingCallback untuk mengontrol bagaimana Aspose.Words menyimpan bagian dokumen saat dokumen ini diekspor ke format HTML. Properti ini memungkinkan Anda untuk mengganti nama file keluaran atau bahkan mengarahkannya ke aliran khusus.

Harap dicatat bahwa panggilan balik ini tidak berguna saat menyimpan ke EPUB karena semua bagian keluaran harus disimpan ke dalam satu wadah – the .berkas epub. Jadi, pengalihan aliran tidak didukung, dan efek penggantian nama tidak terlihat karena file diganti namanya di dalam wadah.

Menggabungkan Dokumen Terpisah dengan Dokumen Lain

Aspose.Words memungkinkan Anda menggabungkan dokumen split keluaran dengan dokumen lain untuk membentuk dokumen baru. Ini bisa disebut penggabungan dokumen.

Contoh kode berikut menunjukkan cara menggabungkan dokumen terpisah dengan dokumen lain:

// 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");
}