NodeImporter constructor
Contents
[
Hide
]NodeImporter(src_doc, dst_doc, import_format_mode)
Initializes a new instance of the NodeImporter class.
def __init__(self, src_doc: aspose.words.DocumentBase, dst_doc: aspose.words.DocumentBase, import_format_mode: aspose.words.ImportFormatMode):
...
| Parameter | Type | Description |
|---|---|---|
| src_doc | DocumentBase | The source document. |
| dst_doc | DocumentBase | The destination document that will be the owner of imported nodes. |
| import_format_mode | ImportFormatMode | Specifies how to merge style formatting that clashes. |
NodeImporter(src_doc, dst_doc, import_format_mode, import_format_options)
Initializes a new instance of the NodeImporter class.
def __init__(self, src_doc: aspose.words.DocumentBase, dst_doc: aspose.words.DocumentBase, import_format_mode: aspose.words.ImportFormatMode, import_format_options: aspose.words.ImportFormatOptions):
...
| Parameter | Type | Description |
|---|---|---|
| src_doc | DocumentBase | The source document. |
| dst_doc | DocumentBase | The destination document that will be the owner of imported nodes. |
| import_format_mode | ImportFormatMode | Specifies how to merge style formatting that clashes. |
| import_format_options | ImportFormatOptions | Specifies various options to format imported node. |
Examples
Shows how to insert the contents of one document to a bookmark in another document (InsertDocument).
@staticmethod
def insert_document(insertion_destination, doc_to_insert):
if insertion_destination.node_type == aw.NodeType.PARAGRAPH or insertion_destination.node_type == aw.NodeType.TABLE:
destination_parent = insertion_destination.parent_node
importer = aw.NodeImporter(src_doc=doc_to_insert, dst_doc=insertion_destination.document, import_format_mode=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 filter(lambda a: a is not None, map(lambda b: system_helper.linq.Enumerable.of_type(lambda x: x.as_section(), b), list(doc_to_insert.sections))):
for src_node in src_section.body:
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
else:
raise Exception()
Shows how resolve a clash when importing documents that have lists with the same list definition identifier.
src_doc = aw.Document(file_name=MY_DIR + 'List with the same definition identifier - source.docx')
dst_doc = aw.Document(file_name=MY_DIR + 'List with the same definition identifier - destination.docx')
# Set the "KeepSourceNumbering" property to "true" to apply a different list definition ID
# to identical styles as Aspose.Words imports them into destination documents.
import_format_options = aw.ImportFormatOptions()
import_format_options.keep_source_numbering = True
dst_doc.append_document(src_doc=src_doc, import_format_mode=aw.ImportFormatMode.USE_DESTINATION_STYLES, import_format_options=import_format_options)
dst_doc.update_list_labels()
Shows how to resolve list numbering clashes in source and destination documents.
# Open a document with a custom list numbering scheme, and then clone it.
# Since both have the same numbering format, the formats will clash if we import one document into the other.
src_doc = aw.Document(file_name=MY_DIR + 'Custom list numbering.docx')
dst_doc = src_doc.clone()
# When we import the document's clone into the original and then append it,
# then the two lists with the same list format will join.
# If we set the "KeepSourceNumbering" flag to "false", then the list from the document clone
# that we append to the original will carry on the numbering of the list we append it to.
# This will effectively merge the two lists into one.
# If we set the "KeepSourceNumbering" flag to "true", then the document clone
# list will preserve its original numbering, making the two lists appear as separate lists.
import_format_options = aw.ImportFormatOptions()
import_format_options.keep_source_numbering = keep_source_numbering
importer = aw.NodeImporter(src_doc=src_doc, dst_doc=dst_doc, import_format_mode=aw.ImportFormatMode.KEEP_DIFFERENT_STYLES, import_format_options=import_format_options)
for paragraph in src_doc.first_section.body.paragraphs:
paragraph = paragraph.as_paragraph()
imported_node = importer.import_node(paragraph, True)
dst_doc.first_section.body.append_child(imported_node)
dst_doc.update_list_labels()
if keep_source_numbering:
self.assertEqual('6. Item 1\r\n' + '7. Item 2 \r\n' + '8. Item 3\r\n' + '9. Item 4\r\n' + '6. Item 1\r\n' + '7. Item 2 \r\n' + '8. Item 3\r\n' + '9. Item 4', dst_doc.first_section.body.to_string(save_format=aw.SaveFormat.TEXT).strip())
else:
self.assertEqual('6. Item 1\r\n' + '7. Item 2 \r\n' + '8. Item 3\r\n' + '9. Item 4\r\n' + '10. Item 1\r\n' + '11. Item 2 \r\n' + '12. Item 3\r\n' + '13. Item 4', dst_doc.first_section.body.to_string(save_format=aw.SaveFormat.TEXT).strip())
See Also
- module aspose.words
- class NodeImporter