Метод Aspose::Words::DocumentBase::ImportNode
DocumentBase::ImportNode(const System::SharedPtr<Aspose::Words::Node>&, bool) method
Импортирует узел из другого документа в текущий документ.
System::SharedPtr<Aspose::Words::Node> Aspose::Words::DocumentBase::ImportNode(const System::SharedPtr<Aspose::Words::Node> &srcNode, bool isImportChildren)
| Параметр | Тип | Описание |
|---|---|---|
| srcNode | const System::SharedPtr<Aspose::Words::Node>& | Импортируемый узел. |
| isImportChildren | bool | true для импорта всех дочерних узлов рекурсивно; иначе false. |
ReturnValue
Клонированный узел, принадлежащий текущему документу.
Примечания
Этот метод использует параметр UseDestinationStyles для разрешения форматирования.
Импорт узла создаёт копию исходного узла, принадлежащего импортирующему документу. Возвращённый узел не имеет родителя. Исходный узел не изменяется и не удаляется из оригинального документа.
Прежде чем узел из другого документа может быть вставлен в этот документ, его необходимо импортировать. Во время импорта свойства, специфичные для документа, такие как ссылки на стили и списки, переводятся из оригинального в импортирующий документ. После импорта узел может быть вставлен в соответствующее место документа с помощью InsertBefore1() или <see cref="Aspose::Words::CompositeNode::InsertAfter1(System::SharedPtr«tt>0\>, System::SharedPtr\Aspose::Words::Node\\)">InsertAfter1().
Если исходный узел уже принадлежит целевому документу, то просто создаётся глубокая копия исходного узла.
Примеры
Показывает, как импортировать узел из одного документа в другой.
auto srcDoc = System::MakeObject<Aspose::Words::Document>();
auto dstDoc = System::MakeObject<Aspose::Words::Document>();
srcDoc->get_FirstSection()->get_Body()->get_FirstParagraph()->AppendChild<System::SharedPtr<Aspose::Words::Run>>(System::MakeObject<Aspose::Words::Run>(srcDoc, u"Source document first paragraph text."));
dstDoc->get_FirstSection()->get_Body()->get_FirstParagraph()->AppendChild<System::SharedPtr<Aspose::Words::Run>>(System::MakeObject<Aspose::Words::Run>(dstDoc, u"Destination document first paragraph text."));
// Каждый узел имеет родительский документ, которым является документ, содержащий узел.
// Вставка узла в документ, которому узел не принадлежит, вызовет исключение.
ASPOSE_ASSERT_NE(dstDoc, srcDoc->get_FirstSection()->get_Document());
ASSERT_THROW(static_cast<std::function<void()>>([&dstDoc, &srcDoc]() -> void
{
dstDoc->AppendChild<System::SharedPtr<Aspose::Words::Section>>(srcDoc->get_FirstSection());
})(), System::ArgumentException);
// Используйте метод ImportNode для создания копии узла, которая будет иметь документ
// который вызвал метод ImportNode, установленный в качестве нового документа‑владельца.
auto importedSection = System::ExplicitCast<Aspose::Words::Section>(dstDoc->ImportNode(srcDoc->get_FirstSection(), true));
ASPOSE_ASSERT_EQ(dstDoc, importedSection->get_Document());
// Теперь мы можем вставить узел в документ.
dstDoc->AppendChild<System::SharedPtr<Aspose::Words::Section>>(importedSection);
ASSERT_EQ(u"Destination document first paragraph text.\r\nSource document first paragraph text.\r\n", dstDoc->ToString(Aspose::Words::SaveFormat::Text));
См. также
- Class Node
- Class DocumentBase
- Namespace Aspose::Words
- Library Aspose.Words for C++
DocumentBase::ImportNode(const System::SharedPtr<Aspose::Words::Node>&, bool, Aspose::Words::ImportFormatMode) method
Импортирует узел из другого документа в текущий документ с параметром для управления форматированием.
System::SharedPtr<Aspose::Words::Node> Aspose::Words::DocumentBase::ImportNode(const System::SharedPtr<Aspose::Words::Node> &srcNode, bool isImportChildren, Aspose::Words::ImportFormatMode importFormatMode)
| Параметр | Тип | Описание |
|---|---|---|
| srcNode | const System::SharedPtr<Aspose::Words::Node>& | Узел для импорта. |
| isImportChildren | bool | true для импорта всех дочерних узлов рекурсивно; иначе false. |
| importFormatMode | Aspose::Words::ImportFormatMode | Указывает, как объединять конфликтующее форматирование стилей. |
ReturnValue
Клонированный, импортированный узел. Узел принадлежит целевому документу, но не имеет родителя.
Примечания
Эта перегрузка полезна для управления тем, как импортируются стили и форматирование списков.
Импорт узла создаёт копию исходного узла, принадлежащего импортирующему документу. Возвращённый узел не имеет родителя. Исходный узел не изменяется и не удаляется из оригинального документа.
Прежде чем узел из другого документа может быть вставлен в этот документ, его необходимо импортировать. Во время импорта свойства, специфичные для документа, такие как ссылки на стили и списки, переводятся из оригинального в импортирующий документ. После импорта узел может быть вставлен в соответствующее место документа с помощью InsertBefore1() или <see cref="Aspose::Words::CompositeNode::InsertAfter1(System::SharedPtr«tt>0\>, System::SharedPtr\Aspose::Words::Node\\)">InsertAfter1().
Если исходный узел уже принадлежит целевому документу, то просто создаётся глубокая копия исходного узла.
Примеры
Показывает, как импортировать узел из исходного документа в целевой документ с определёнными параметрами.
// Создайте два документа и добавьте символьный стиль в каждый документ.
// Настройте стили так, чтобы у них было одинаковое имя, но различное форматирование текста.
auto srcDoc = System::MakeObject<Aspose::Words::Document>();
System::SharedPtr<Aspose::Words::Style> srcStyle = srcDoc->get_Styles()->Add(Aspose::Words::StyleType::Character, u"My style");
srcStyle->get_Font()->set_Name(u"Courier New");
auto srcBuilder = System::MakeObject<Aspose::Words::DocumentBuilder>(srcDoc);
srcBuilder->get_Font()->set_Style(srcStyle);
srcBuilder->Writeln(u"Source document text.");
auto dstDoc = System::MakeObject<Aspose::Words::Document>();
System::SharedPtr<Aspose::Words::Style> dstStyle = dstDoc->get_Styles()->Add(Aspose::Words::StyleType::Character, u"My style");
dstStyle->get_Font()->set_Name(u"Calibri");
auto dstBuilder = System::MakeObject<Aspose::Words::DocumentBuilder>(dstDoc);
dstBuilder->get_Font()->set_Style(dstStyle);
dstBuilder->Writeln(u"Destination document text.");
// Импортируйте раздел из целевого документа в исходный документ, вызывая конфликт имён стилей.
// Если мы используем стили назначения, то импортированный исходный текст с тем же именем стиля
// будет принимать стиль назначения.
auto importedSection = System::ExplicitCast<Aspose::Words::Section>(dstDoc->ImportNode(srcDoc->get_FirstSection(), true, Aspose::Words::ImportFormatMode::UseDestinationStyles));
ASSERT_EQ(dstStyle->get_Font()->get_Name(), importedSection->get_Body()->get_FirstParagraph()->get_Runs()->idx_get(0)->get_Font()->get_Name());
ASSERT_EQ(dstStyle->get_Name(), importedSection->get_Body()->get_FirstParagraph()->get_Runs()->idx_get(0)->get_Font()->get_StyleName());
// Если мы используем ImportFormatMode.KeepDifferentStyles, стиль источника сохраняется,
// и конфликт имён разрешается добавлением суффикса.
dstDoc->ImportNode(srcDoc->get_FirstSection(), true, Aspose::Words::ImportFormatMode::KeepDifferentStyles);
ASSERT_EQ(dstStyle->get_Font()->get_Name(), dstDoc->get_Styles()->idx_get(u"My style")->get_Font()->get_Name());
ASSERT_EQ(srcStyle->get_Font()->get_Name(), dstDoc->get_Styles()->idx_get(u"My style_0")->get_Font()->get_Name());
См. также
- Class Node
- Enum ImportFormatMode
- Class DocumentBase
- Namespace Aspose::Words
- Library Aspose.Words for C++
DocumentBase::ImportNode(const System::SharedPtr<Aspose::Words::Node>&, bool, Aspose::Words::ImportFormatMode, const System::SharedPtr<Aspose::Words::ImportFormatOptions>&) method
Импортирует узел из другого документа в текущий документ с параметром для управления форматированием.
System::SharedPtr<Aspose::Words::Node> Aspose::Words::DocumentBase::ImportNode(const System::SharedPtr<Aspose::Words::Node> &srcNode, bool isImportChildren, Aspose::Words::ImportFormatMode importFormatMode, const System::SharedPtr<Aspose::Words::ImportFormatOptions> &importFormatOptions)
| Параметр | Тип | Описание |
|---|---|---|
| srcNode | const System::SharedPtr<Aspose::Words::Node>& | Узел для импорта. |
| isImportChildren | bool | true для импорта всех дочерних узлов рекурсивно; иначе false. |
| importFormatMode | Aspose::Words::ImportFormatMode | Указывает, как объединять конфликтующее форматирование стилей. |
| importFormatOptions | const System::SharedPtr<Aspose::Words::ImportFormatOptions>& | Позволяет указывать различные дополнительные параметры форматирования. |
ReturnValue
Клонированный, импортированный узел. Узел принадлежит целевому документу, но не имеет родителя.
Примечания
Эта перегрузка полезна для управления тем, как импортируются стили и форматирование списков.
Импорт узла создаёт копию исходного узла, принадлежащего импортирующему документу. Возвращённый узел не имеет родителя. Исходный узел не изменяется и не удаляется из оригинального документа.
Прежде чем узел из другого документа может быть вставлен в этот документ, его необходимо импортировать. Во время импорта свойства, специфичные для документа, такие как ссылки на стили и списки, переводятся из оригинального в импортирующий документ. После импорта узел может быть вставлен в соответствующее место документа с помощью InsertBefore1() или <see cref="Aspose::Words::CompositeNode::InsertAfter1(System::SharedPtr«tt>0\>, System::SharedPtr\Aspose::Words::Node\\)">InsertAfter1().
Если исходный узел уже принадлежит целевому документу, то просто создаётся глубокая копия исходного узла.
Примеры
Показывает, как импортировать узел с разрешением исходных цветовых тем фигур.
auto srcDoc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(srcDoc);
// Перейдите к основному нижнему колонтитулу и вставьте форму, использующую цвета темы.
builder->MoveToHeaderFooter(Aspose::Words::HeaderFooterType::FooterPrimary);
System::SharedPtr<Aspose::Words::Drawing::Shape> shape = builder->InsertShape(Aspose::Words::Drawing::ShapeType::Rectangle, 100, 50);
shape->get_Stroke()->set_ForeThemeColor(Aspose::Words::Themes::ThemeColor::Dark1);
auto dstDoc = System::MakeObject<Aspose::Words::Document>();
// Импортируйте исходный нижний колонтитул в целевой документ с разрешёнными цветами темы,
// чтобы форма сохраняла свой фактический цвет из исходного документа.
System::SharedPtr<Aspose::Words::HeaderFooter> footer = srcDoc->get_FirstSection()->get_HeadersFooters()->idx_get(Aspose::Words::HeaderFooterType::FooterPrimary);
auto options = System::MakeObject<Aspose::Words::ImportFormatOptions>();
options->set_ResolveThemeColors(true);
auto importedFooter = System::ExplicitCast<Aspose::Words::HeaderFooter>(dstDoc->ImportNode(footer, true, Aspose::Words::ImportFormatMode::KeepSourceFormatting, options));
dstDoc->get_FirstSection()->get_HeadersFooters()->Add(importedFooter);
dstDoc->Save(get_ArtifactsDir() + u"DocumentBase.ImportNodeWithResolveThemeColors.docx");
См. также
- Class Node
- Enum ImportFormatMode
- Class ImportFormatOptions
- Class DocumentBase
- Namespace Aspose::Words
- Library Aspose.Words for C++