Voeg Dokumente in en Voeg By
Soms is dit nodig om verskeie dokumente in een te kombineer. Jy kan dit met die hand doen of jy kan Aspose.Words invoeg of voeg funksie by.
Die invoegbewerking laat jou toe om die inhoud van voorheen geskepte dokumente in’n nuwe of bestaande een in te voeg.
Op sy beurt kan die append-funksie u slegs’n dokument aan die einde van’n ander dokument byvoeg.
Hierdie artikel verduidelik hoe om’n dokument op verskillende maniere by’n ander een in te voeg of by te voeg en beskryf die algemene eienskappe wat u kan toepas terwyl u dokumente invoeg of byvoeg.
Voeg’n Dokument in
Soos hierbo genoem, word’n dokument in Aspose.Words voorgestel as’n boom van nodusse, en die operasie om een dokument in’n ander in te voeg, is om nodusse van die eerste dokumentboom na die tweede te kopieer.
U kan dokumente op verskillende plekke op verskillende maniere invoeg. U kan byvoorbeeld’n dokument invoeg deur’n vervangingsbewerking, ‘n samesmeltingsveld tydens’n samesmeltingsbewerking of via’n boekmerk.
Jy kan ook die insert_document of insert_document_inline metode gebruik, wat soortgelyk is aan die invoeging van’n dokument in Microsoft Word, om’n hele dokument by die huidige wyserposisie in te voeg sonder enige vorige invoer.
Die volgende kode voorbeeld toon hoe om’n dokument in te voeg met behulp van die insert_document metode:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git. | |
src_doc = aw.Document(MY_DIR + "Document source.docx") | |
dst_doc = aw.Document(MY_DIR + "Northwind traders.docx") | |
builder = aw.DocumentBuilder(dst_doc) | |
builder.move_to_document_end() | |
builder.insert_break(aw.BreakType.PAGE_BREAK) | |
builder.insert_document(src_doc, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING) | |
builder.document.save(ARTIFACTS_DIR + "JoinAndAppendDocuments.insert_document.docx") |
Die volgende kode voorbeeld toon hoe om’n dokument in te voeg met behulp van die insert_document_inline metode:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git. | |
src_doc = aw.DocumentBuilder() | |
src_doc.write("[src content]") | |
# Create destination document. | |
dst_doc = aw.DocumentBuilder() | |
dst_doc.write("Before ") | |
dst_doc.insert_node(aw.BookmarkStart(dst_doc.document, "src_place")) | |
dst_doc.insert_node(aw.BookmarkEnd(dst_doc.document, "src_place")) | |
dst_doc.write(" after") | |
self.assertEqual("Before after", dst_doc.document.get_text().strip()) | |
# Insert source document into destination inline. | |
dst_doc.move_to_bookmark("src_place") | |
dst_doc.insert_document_inline(src_doc.document, aw.ImportFormatMode.USE_DESTINATION_STYLES, aw.ImportFormatOptions()) | |
self.assertEqual("Before [src content] after", dst_doc.document.get_text().strip()) |
Die volgende onderafdelings beskryf die opsies waartydens jy een dokument in’n ander kan invoeg.
Voeg’n Dokument By Boekmerk in
U kan’n tekslêer in’n dokument invoer en dit direk na’n boekmerk wat u in die dokument gedefinieer het, invoeg. Om dit te doen, skep’n boekmerk paragraaf waar jy wil hê die dokument moet ingevoeg word.
Die volgende kodering voorbeeld toon hoe om die inhoud van een dokument in’n boekmerk in’n ander dokument in te voeg:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git. | |
main_doc = aw.Document(MY_DIR + "Document insertion 1.docx") | |
sub_doc = aw.Document(MY_DIR + "Document insertion 2.docx") | |
bookmark = main_doc.range.bookmarks.get_by_name("insertionPlace") | |
self.insert_document(bookmark.bookmark_start.parent_node, sub_doc) | |
main_doc.save(ARTIFACTS_DIR + "CloneAndCombineDocuments.insert_document_at_bookmark.docx") |
Voeg’n Dokument by
U het moontlik’n gebruiksgeval waar u addisionele bladsye van’n dokument tot aan die einde van’n bestaande dokument moet insluit. Om dit te doen, moet jy net die append_document metode noem om’n dokument aan die einde van’n ander een by te voeg.
Die volgende kode voorbeeld toon hoe om’n dokument aan die einde van’n ander dokument te voeg:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git. | |
dst_doc = aw.Document() | |
dst_doc.first_section.body.append_paragraph("Destination document text. ") | |
src_doc = aw.Document() | |
src_doc.first_section.body.append_paragraph("Source document text. ") | |
# Append the source document to the destination document. | |
# Pass format mode to retain the original formatting of the source document when importing it. | |
dst_doc.append_document(src_doc, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING) | |
dst_doc.save(ARTIFACTS_DIR + "JoinAndAppendDocuments.keep_source_formatting.docx") |
Invoer En Voeg Nodes Handmatig
Aspose.Words laat jou toe om dokumente outomaties in te voeg en by te voeg sonder enige vorige invoervereistes. As jy egter’n spesifieke nodus van jou dokument, soos’n afdeling of’n paragraaf, moet invoeg of byvoeg, moet jy eers hierdie nodus handmatig invoer.
Wanneer jy een afdeling of paragraaf by’n ander moet voeg of byvoeg, moet jy in wese die nodusse van die eerste dokumentknoopboom in die tweede een invoer deur die import_node - metode te gebruik. Na die invoer van jou nodes, moet jy die insert_after / insert_before metode gebruik om’n nuwe node na/voor die verwysing node in te voeg. Dit laat jou toe om die invoeging proses aan te pas deur die invoer van nodes van’n dokument en die invoeging van dit by gegewe posisies.
U kan ook die append_child - metode gebruik om’n nuwe gespesifiseerde nodus aan die einde van die lys van kindknope by te voeg, byvoorbeeld as u inhoud op die paragraafvlak wil byvoeg in plaas van op die afdelingvlak.
Die volgende kode voorbeeld toon hoe om handmatig invoer nodes en voeg hulle na’n spesifieke node met behulp van die insert_after metode:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git. | |
@staticmethod | |
def insert_document(insertion_destination: aw.Node, doc_to_insert: aw.Document): | |
"""Inserts content of the external document after the specified node. | |
Section breaks and section formatting of the inserted document are ignored. | |
:param insertion_destination: Node in the destination document after which the content | |
Should be inserted. This node should be a block level node (paragraph or table). | |
:param doc_to_insert: The document to insert. | |
""" | |
if insertion_destination.node_type not in (aw.NodeType.PARAGRAPH, aw.NodeType.TABLE): | |
raise ValueError("The destination node should be either a paragraph or table.") | |
destination_parent = insertion_destination.parent_node | |
importer = aw.NodeImporter(doc_to_insert, insertion_destination.document, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING) | |
# Loop through all block-level nodes in the section's body, | |
# then clone and insert every node that is not the last empty paragraph of a section. | |
for src_section in doc_to_insert.sections: | |
for src_node in src_section.as_section().body.get_child_nodes(aw.NodeType.ANY, False): | |
if src_node.node_type == aw.NodeType.PARAGRAPH: | |
para = src_node.as_paragraph() | |
if para.is_end_of_section and not para.has_child_nodes: | |
continue | |
new_node = importer.import_node(src_node, True) | |
destination_parent.insert_after(new_node, insertion_destination) | |
insertion_destination = new_node |
Inhoud word in die bestemming dokument afdeling vir afdeling ingevoer, wat beteken dat instellings, soos bladsy opstel en koptekste of voetskrifte, tydens invoer bewaar word. Dit is ook nuttig om daarop te let dat jy formatering instellings kan definieer wanneer jy’n dokument invoeg of byvoeg om te spesifiseer hoe twee dokumente saamgevoeg word.
Algemene Eienskappe Vir Die Invoeging En Byvoeging Van Dokumente
Beide insert_document en append_document metodes aanvaar ImportFormatMode en ImportFormatOptions as insette parameters. Die ImportFormatMode laat jou toe om te beheer hoe dokument formatering saamgesmelt word wanneer jy inhoud van een dokument in’n ander invoer deur verskillende formaatmodusse soos USE_DESTINATION_STYLES, KEEP_SOURCE_FORMATTING en KEEP_DIFFERENT_STYLES te kies. Met die ImportFormatOptions kan u verskillende invoeropsies kies, soos ignore_header_footer, ignore_text_boxes, keep_source_numbering, merge_pasted_lists, en smart_style_behavior.
Aspose.Words laat jou toe om die visualisering van’n gevolglike dokument aan te pas wanneer twee dokumente saamgevoeg word in’n insetsel of byvoeging deur die Section en PageSetup te gebruik. Die page_setup eienskap bevat al die eienskappe van’n afdeling soos section_start, restart_page_numbering, page_starting_number, orientation, en ander. Die mees algemene gebruik geval is om die section_start eienskap te stel om te definieer of die bygevoeg inhoud sal verskyn op dieselfde bladsy of verdeel in’n nuwe een.
Die volgende kode voorbeeld toon hoe om een dokument by’n ander te voeg terwyl die inhoud van die verdeling oor twee bladsye:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git. | |
src_doc = aw.Document(MY_DIR + "Document source.docx") | |
dst_doc = aw.Document(MY_DIR + "Northwind traders.docx") | |
# Set the source document to continue straight after the end of the destination document. | |
src_doc.first_section.page_setup.section_start = aw.SectionStart.CONTINUOUS | |
# Restart the page numbering on the start of the source document. | |
src_doc.first_section.page_setup.restart_page_numbering = True | |
src_doc.first_section.page_setup.page_starting_number = 1 | |
# To ensure this does not happen when the source document has different page setup settings, make sure the | |
# settings are identical between the last section of the destination document. | |
# If there are further continuous sections that follow on in the source document, | |
# this will need to be repeated for those sections. | |
src_doc.first_section.page_setup.page_width = dst_doc.last_section.page_setup.page_width | |
src_doc.first_section.page_setup.page_height = dst_doc.last_section.page_setup.page_height | |
src_doc.first_section.page_setup.orientation = dst_doc.last_section.page_setup.orientation | |
# Iterate through all sections in the source document. | |
for para in src_doc.get_child_nodes(aw.NodeType.PARAGRAPH, True): | |
para = para.as_paragraph() | |
para.paragraph_format.keep_with_next = True | |
dst_doc.append_document(src_doc, aw.ImportFormatMode.KEEP_SOURCE_FORMATTING) | |
dst_doc.save(ARTIFACTS_DIR + "JoinAndAppendDocuments.different_page_setup.docx") |