Копировать текст с закладкой в документ Word
В этой статье мы рассмотрим приведенный выше исходный код C#, чтобы понять, как использовать функцию копирования текста с закладками в библиотеке Aspose.Words для .NET. Эта функция позволяет копировать содержимое определенной закладки из исходного документа в другой документ.
Предварительные условия
- Базовые знания языка C#.
- Среда разработки .NET с установленной библиотекой Aspose.Words.
Шаг 1. Загрузка исходного документа
Прежде чем копировать текст закладки, нам необходимо загрузить исходный документ вDocument
объект, используя путь к файлу:
string dataDir = "YOUR DOCUMENT DIRECTORY";
Document srcDoc = new Document(dataDir + "Bookmarks.docx");
Шаг 2. Получение исходной закладки
Мы используемBookmarks
свойство диапазона исходного документа, чтобы получить конкретную закладку, которую мы хотим скопировать:
Bookmark srcBookmark = srcDoc.Range.Bookmarks["MyBookmark1"];
Шаг 3. Создание целевого документа
Мы создаем новый документ, который будет служить целевым документом для копирования содержимого закладки:
Document dstDoc = new Document();
Шаг 4. Указание места копирования
Указываем место, куда хотим добавить скопированный текст. В нашем примере мы добавляем текст в конец тела последнего раздела целевого документа:
CompositeNode dstNode = dstDoc.LastSection.Body;
Шаг 5. Импортируйте и скопируйте текст закладки
Мы используемNodeImporter
объект для импорта и копирования текста закладки из исходного документа в целевой документ:
NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);
AppendBookmarkedText(import, srcBookmark, dstNode);
dstDoc.Save(dataDir + "WorkingWithBookmarks.CopyBookmarkedText.docx");
Пример исходного кода для копирования текста с закладками с использованием Aspose.Words для .NET
Вот полный пример исходного кода, демонстрирующий копирование текста из закладки с помощью Aspose.Words для .NET:
// Путь к каталогу документов.
string dataDir = "YOUR DOCUMENT DIRECTORY";
Document srcDoc = new Document(dataDir + "Bookmarks.docx");
// Это закладка, содержимое которой мы хотим скопировать.
Bookmark srcBookmark = srcDoc.Range.Bookmarks["MyBookmark1"];
// Мы будем дополнять этот документ.
Document dstDoc = new Document();
// Допустим, мы добавимся в конец тела последнего раздела.
CompositeNode dstNode = dstDoc.LastSection.Body;
// Если вы импортируете несколько раз без единого контекста, это приведет к созданию множества стилей.
NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);
AppendBookmarkedText(importer, srcBookmark, dstNode);
dstDoc.Save(dataDir + "WorkingWithBookmarks.CopyBookmarkedText.docx");
Исходный код AppendBookmarkedText
private void AppendBookmarkedText(NodeImporter importer, Bookmark srcBookmark, CompositeNode dstNode)
{
// Это абзац, содержащий начало закладки.
Paragraph startPara = (Paragraph) srcBookmark.BookmarkStart.ParentNode;
// Это абзац, содержащий конец закладки.
Paragraph endPara = (Paragraph) srcBookmark.BookmarkEnd.ParentNode;
if (startPara == null || endPara == null)
throw new InvalidOperationException(
"Parent of the bookmark start or end is not a paragraph, cannot handle this scenario yet.");
// Ограничимся достаточно простым сценарием.
if (startPara.ParentNode != endPara.ParentNode)
throw new InvalidOperationException(
"Start and end paragraphs have different parents, cannot handle this scenario yet.");
// Мы хотим скопировать все абзацы от начального до конечного абзаца (включительно).
// поэтому узел, на котором мы останавливаемся, находится после конечного абзаца.
Node endNode = endPara.NextSibling;
for (Node curNode = startPara; curNode != endNode; curNode = curNode.NextSibling)
{
//Это создает копию текущего узла и импортирует ее (делает ее допустимой) в контексте.
// документа назначения. Импорт означает правильную настройку стилей и идентификаторов списков.
Node newNode = importer.ImportNode(curNode, true);
dstNode.AppendChild(newNode);
}
}
Заключение
В этой статье мы изучили исходный код C#, чтобы понять, как использовать функцию «Копировать текст с закладками» из Aspose.Words для .NET. Мы следовали пошаговому руководству, чтобы скопировать содержимое закладки из исходного документа в другой документ.
Часто задаваемые вопросы по копированию текста с закладкой в документ Word
Вопрос: Каковы требования для использования функции «Копировать текст с закладками» в Aspose.Words for .NET?
О: Чтобы использовать функцию «Копировать текст с закладками» в Aspose.Words for .NET, вам необходимо иметь базовые знания языка C#. Вам также потребуется среда разработки .NET с установленной библиотекой Aspose.Words.
Вопрос: Как загрузить исходный документ в Aspose.Words для .NET?
О: Чтобы загрузить исходный документ в Aspose.Words for .NET, вы можете использоватьDocument
class, указав путь к файлу документа. Вот пример кода:
Document srcDoc = new Document("path/to/your/document.docx");
Вопрос: Как получить содержимое определенной закладки в исходном документе с помощью Aspose.Words for .NET?
О: Чтобы получить содержимое определенной закладки в исходном документе с помощью Aspose.Words for .NET, вы можете получить доступ кBookmarks
свойство диапазона исходного документа и используйте имя закладки для получения конкретной закладки. Вот пример кода:
Bookmark srcBookmark = srcDoc.Range.Bookmarks["BookmarkName"];
Вопрос: Как указать расположение текстовой копии закладки в целевом документе с помощью Aspose.Words for .NET?
О: Чтобы указать, где вы хотите добавить скопированный текст закладки в целевой документ с помощью Aspose.Words for .NET, вы можете перейти к телу последнего раздела целевого документа. Вы можете использоватьLastSection
свойство для доступа к последнему разделу иBody
свойство для доступа к телу этого раздела. Вот пример кода:
CompositeNode dstNode = dstDoc.LastSection.Body;
Вопрос: Как импортировать и скопировать текст закладки из исходного документа в целевой документ с помощью Aspose.Words для .NET?
О: Чтобы импортировать и скопировать текст закладки из исходного документа в целевой документ с помощью Aspose.Words for .NET, вы можете использовать командуNodeImporter
класс, определяющий исходный документ, целевой документ и режим форматирования, который необходимо сохранить. Затем вы можете использоватьAppendBookmarkedText
метод для добавления текста закладки в целевой документ. Вот пример кода:
NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);
AppendBookmarkedText(import, srcBookmark, dstNode);
Вопрос: Как сохранить целевой документ после копирования текста закладки с помощью Aspose.Words для .NET?
О: Чтобы сохранить целевой документ после копирования текста из закладки с помощью Aspose.Words for .NET, вы можете использовать командуSave
методDocument
объект, указывающий путь к файлу назначения. Вот пример кода:
dstDoc.Save("path/to/your/destination-document.docx");