ドキュメントを分割する
Splitting または ドキュメントの分割 は、大きなドキュメントを多数の小さなファイルに分割するプロセスです。ファイルを分割する理由はさまざまです。たとえば、特定のドキュメントの一部のページのみが必要であり、ドキュメント全体ではありません。または、プライバシー上の理由から、ドキュメントの一部だけを他の人と共有したい場合があります。分割機能を使用すると、ドキュメントの必要な部分のみを取得し、マークアップ、保存、送信などの必要なアクションを実行できます。
Aspose.Words は、見出しまたはセクションごとに 1 つのドキュメントを複数のドキュメントに分割する効率的な方法を提供します。ドキュメントをページまたはページ範囲ごとに分割することもできます。この記事では両方の分割オプションについて説明します。
Aspose.Words を使用してドキュメントを小さなファイルに分割するには、次の手順に従う必要があります。
- サポートされている形式でドキュメントをロードします。
- 文書を分割します。
- 出力ドキュメントを保存します。
ドキュメントを分割すると、必要なページやテキストなどで始まるすべての出力ドキュメントを開くことができるようになります。
オンラインで試す
この機能は 無料のオンラインドキュメントスプリッター で試すことができます。
異なる基準を使用してドキュメントを分割する
Aspose.Words を使用すると、EPUB または HTML ドキュメントをさまざまな基準に従って章に分割できます。このプロセスでは、ソース ドキュメントのスタイルとレイアウトが出力ドキュメントでも保持されます。
DocumentSplitCriteria 列挙を使用して基準を指定できます。したがって、次の基準のいずれかを使用してドキュメントを章に分割するか、複数の基準を組み合わせて使用できます。
- 見出し段落、
- セクション区切り、
- 列の区切り、
- ページ区切り。
出力を HTML に保存する場合、Aspose.Words は個々の章を個別の HTML ファイルとして保存します。その結果、ドキュメントは複数の HTML ファイルに分割されます。出力を EPUB に保存する場合、Aspose.Words は、使用した DocumentSplitCriteria 値に関係なく、結果を単一の EPUB ファイルに保存します。したがって、EPUB ドキュメントに DocumentSplitCriteria を使用すると、リーダー アプリケーションでのコンテンツの外観にのみ影響します。コンテンツは章に分割され、ドキュメントは連続して表示されなくなります。
このセクションでは、考えられる分割基準の一部のみを検討します。
文書を見出しごとに分割する
ドキュメントを見出しごとに章に分割するには、document_split_criteria プロパティの HEADING_PARAGRAPH 値を使用します。
見出し 1、2、3 など、見出し段落の特定のレベルで文書を分割する必要がある場合は、document_split_heading_level プロパティも使用します。出力は、指定された見出しレベルで書式設定された段落ごとに分割されます。
次のコード例は、見出しごとにドキュメントを小さな部分に分割する方法を示しています。
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Rendering.docx") | |
options = aw.saving.HtmlSaveOptions() | |
# Split a document into smaller parts, in this instance split by heading. | |
options.document_split_criteria = aw.saving.DocumentSplitCriteria.HEADING_PARAGRAPH | |
doc.save(docs_base.artifacts_dir + "SplitDocument.by_headings_html.html", options) |
この基準では、Aspose.Words は分割時に HTML 形式での保存のみをサポートしていることに注意してください。
EPUB に保存する場合、ドキュメントは複数のファイルに分割されず、出力ファイルは 1 つだけになります。
ドキュメントをセクションごとに分割する
Aspose.Words では、セクション区切りを使用してドキュメントを分割し、HTML に保存することもできます。この目的のために、SECTION_BREAK を document_split_criteria として使用します。
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
options = aw.saving.HtmlSaveOptions() | |
options.document_split_criteria = aw.saving.DocumentSplitCriteria.SECTION_BREAK |
ソース ドキュメントを複数の出力ドキュメントに分割する別の方法もあり、Aspose.Words でサポートされている任意の出力形式を選択できます。
次のコード例は、(document_split_criteria プロパティを使用せずに) セクション区切りによってドキュメントを小さな部分に分割する方法を示しています。
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Big document.docx") | |
for i in range(0, doc.sections.count) : | |
# Split a document into smaller parts, in this instance, split by section. | |
section = doc.sections[i].clone() | |
newDoc = aw.Document() | |
newDoc.sections.clear() | |
newSection = newDoc.import_node(section, True).as_section() | |
newDoc.sections.add(newSection) | |
# Save each section as a separate document. | |
newDoc.save(docs_base.artifacts_dir + f"SplitDocument.by_sections_{i}.docx") | |
ページごとの分割
ドキュメントをページごと、ページ範囲ごと、または指定したページ番号から開始して分割することもできます。このような場合には、extract_pages メソッドが機能します。
このセクションでは、Document クラスと extract_pages メソッドを使用してページ単位でドキュメントを分割するいくつかの使用例について説明します。
ドキュメントをページごとに分割する
Aspose.Words を使用すると、複数ページのドキュメントをページごとに分割できます。
次のコード例は、ドキュメントを分割し、各ページを別のドキュメントとして保存する方法を示しています。
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Big document.docx") | |
pageCount = doc.page_count | |
for page in range(0, pageCount) : | |
# Save each page as a separate document. | |
extractedPage = doc.extract_pages(page, 1) | |
extractedPage.save(docs_base.artifacts_dir + f"SplitDocument.page_by_page_{page + 1}.docx") | |
ページ範囲ごとにドキュメントを分割する
Aspose.Words を使用すると、複数ページのドキュメントをページ範囲ごとに分割できます。 1 つのファイルをさまざまなページ範囲を持つ複数のファイルに分割したり、1 つの範囲だけを選択してソース文書のこの部分だけを保存したりできます。ドキュメントの最大ページ番号と最小ページ番号に従ってページ範囲を選択できることに注意してください。
次のコード例は、特定の開始インデックスと終了インデックスを使用して、ページ範囲ごとにドキュメントを小さな部分に分割する方法を示しています。
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Big document.docx") | |
# Get part of the document. | |
extractedPages = doc.extract_pages(3, 6) | |
extractedPages.save(docs_base.artifacts_dir + "SplitDocument.by_page_range.docx") |
分割されたドキュメントを別のファイルと結合する
Aspose.Words を使用すると、出力された分割ドキュメントを別のドキュメントと結合して、新しいドキュメントを形成できます。これを文書の結合と呼ぶことができます。
次のコード例は、分割ドキュメントを別のドキュメントと結合する方法を示しています。
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
@staticmethod | |
def merge_documents() : | |
# Find documents using for merge. | |
documentPaths = [f for f in os.listdir(docs_base.artifacts_dir) if (os.path.isfile(os.path.join(docs_base.artifacts_dir, f)) and f.find("SplitDocument.page_by_page_") >= 0)] | |
sourceDocumentPath = os.path.join(docs_base.artifacts_dir, documentPaths[0]) | |
# Open the first part of the resulting document. | |
sourceDoc = aw.Document(sourceDocumentPath) | |
# Create a new resulting document. | |
mergedDoc = aw.Document() | |
mergedDocBuilder = aw.DocumentBuilder(mergedDoc) | |
# Merge document parts one by one. | |
for documentPath in documentPaths : | |
documentPath = os.path.join(docs_base.artifacts_dir, documentPath) | |
if (documentPath == sourceDocumentPath) : | |
continue | |
mergedDocBuilder.move_to_document_end() | |
mergedDocBuilder.insert_document(sourceDoc, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING) | |
sourceDoc = aw.Document(documentPath) | |
mergedDoc.save(docs_base.artifacts_dir + "SplitDocument.merge_documents.docx") | |