Разделение документа
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 документов влияет только на внешний вид их содержимого в приложениях для чтения: содержимое будет разделено на главы, и документ больше не будет выглядеть непрерывным.
В этом разделе мы рассмотрим лишь некоторые из возможных критериев разделения.
Разбить документ по заголовкам
Чтобы разбить документ на главы по заголовкам, используйте значение HEADING_PARAGRAPH свойства document_split_criteria.
Если вам нужно разбить документ на абзацы с определенным уровнем заголовков, например, заголовки 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 документ не будет разделен на несколько файлов, и будет только один выходной файл.
Разбить документ на разделы
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 позволяет разделить многостраничный документ по диапазонам страниц. Вы можете разделить один файл на несколько файлов с различными диапазонами страниц или просто выбрать один диапазон и сохранить только эту часть исходного документа. Обратите внимание, что вы можете выбрать диапазон страниц в соответствии с максимальным и минимальным номерами страниц документа.
В следующем примере кода показано, как разбить документ на более мелкие части по диапазону страниц с определенными начальными и конечными индексами:
# 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") | |