Клониране на документ
Клонирането на документ е процес на създаване на идентично копие на оригинален документ, което може да подобри производителността и да ви спести от потенциални течове на памет.
Тази статия ще обясни основните случаи на използване на клониране на документ и как да създадете клониране на документ, използвайки Aspose.Words.
Операции с документи за клониране
Операцията за клониране ви позволява да направите процеса на създаване на документи по-бърз, тъй като няма да се налага да зареждате и анализирате документ от файл всеки път.
След като създадете клонинг на вашия документ, ще можете да го редактирате и да извършвате различни операции върху него, например да го сравните с оригиналния документ, да го добавите или вмъкнете в друг документ. Можете също така да променяте клонираните елементи или тяхното съдържание, преди да ги вмъкнете в друг документ.
Създаване на клон на документ
Aspose.Words Позволява ви да клонирате документ с помощта на Clone метод, който изпълнява дълбоко копие на документа и го връща. С други думи, тя ще получи пълно копие на DOM. Методът Clone
ускорява генерирането на документи и се нуждаете само от един ред код, за да получите копие на документа си.
Клонирането произвежда нов документ със същото съдържание като оригинала, но с уникално копие на всеки от оригиналните документи nodes. Можете също да приложите операцията за клониране към възел на документ, като използвате метода възел Clone, който ви позволява да дублирате съставни възли на документ с и без техните дъщерни възли.
Следващият пример за код показва как да клонирате документ и да създадете дубликат на секция в този документ:
// Create a Document. | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); | |
builder->Writeln(u"This is the original document before applying the clone method"); | |
// Clone the document. | |
System::SharedPtr<Document> clone = doc->Clone(); | |
// Edit the cloned document. | |
builder = System::MakeObject<DocumentBuilder>(clone); | |
builder->Write(u"Section 1"); | |
builder->InsertBreak(BreakType::SectionBreakNewPage); | |
builder->Write(u"Section 2"); | |
// This shows what is in the document originally. The document has two sections. | |
std::cout << clone->GetText().Trim() << std::endl << std::endl; | |
// Duplicate the last section and append the copy to the end of the document. | |
auto lastSectionIdx = clone->get_Sections()->get_Count() - 1; | |
System::SharedPtr<Section> newSection = clone->get_Sections()->idx_get(lastSectionIdx)->Clone(); | |
clone->get_Sections()->Add(newSection); | |
// Check what the document contains after we changed it. | |
std::cout << clone->GetText().Trim() << std::endl << std::endl; |