Copiar texto marcado em documento do Word

Neste artigo, exploraremos o código-fonte C# acima para entender como usar a função Copiar texto marcado como favorito na biblioteca Aspose.Words for .NET. Este recurso permite copiar o conteúdo de um marcador específico de um documento de origem para outro documento.

Pré-requisitos

  • Conhecimento básico da linguagem C#.
  • Ambiente de desenvolvimento .NET com biblioteca Aspose.Words instalada.

Etapa 1: Carregando o documento de origem

Antes de copiar o texto do marcador, precisamos carregar o documento de origem em umDocument objeto usando o caminho do arquivo:

string dataDir = "YOUR DOCUMENT DIRECTORY";
Document srcDoc = new Document(dataDir + "Bookmarks.docx");

Etapa 2: obter o marcador de origem

Nós usamos oBookmarks propriedade do intervalo do documento de origem para obter o marcador específico que queremos copiar:

Bookmark srcBookmark = srcDoc.Range.Bookmarks["MyBookmark1"];

Etapa 3: Criando o documento de destino

Criamos um novo documento que servirá como documento de destino para copiar o conteúdo do marcador:

Document dstDoc = new Document();

Etapa 4: especificando o local da cópia

Especificamos o local onde queremos adicionar o texto copiado. No nosso exemplo, adicionamos o texto ao final do corpo da última seção do documento de destino:

CompositeNode dstNode = dstDoc.LastSection.Body;

Etapa 5: importar e copiar o texto do marcador

Usamos umNodeImporterobjeto para importar e copiar o texto do marcador de um documento de origem para o documento de destino:

NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);

AppendBookmarkedText(import, srcBookmark, dstNode);

dstDoc.Save(dataDir + "WorkingWithBookmarks.CopyBookmarkedText.docx");

Exemplo de código-fonte para copiar texto marcado como favorito usando Aspose.Words for .NET

Aqui está o exemplo de código-fonte completo para demonstrar a cópia de texto de um marcador usando Aspose.Words for .NET:


	// O caminho para o diretório de documentos.
	string dataDir = "YOUR DOCUMENT DIRECTORY";
	Document srcDoc = new Document(dataDir + "Bookmarks.docx");

	// Este é o marcador cujo conteúdo queremos copiar.
	Bookmark srcBookmark = srcDoc.Range.Bookmarks["MyBookmark1"];

	// Estaremos adicionando a este documento.
	Document dstDoc = new Document();

	// Digamos que seremos anexados ao final do corpo da última seção.
	CompositeNode dstNode = dstDoc.LastSection.Body;

	// Se você importar várias vezes sem um único contexto, isso resultará na criação de muitos estilos.
	NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);

	AppendBookmarkedText(importer, srcBookmark, dstNode);
	
	dstDoc.Save(dataDir + "WorkingWithBookmarks.CopyBookmarkedText.docx");

Código-fonte AppendBookmarkedText


private void AppendBookmarkedText(NodeImporter importer, Bookmark srcBookmark, CompositeNode dstNode)
        {
            // Este é o parágrafo que contém o início do marcador.
            Paragraph startPara = (Paragraph) srcBookmark.BookmarkStart.ParentNode;

            // Este é o parágrafo que contém o final do marcador.
            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.");

            // Limitamo-nos a um cenário razoavelmente simples.
            if (startPara.ParentNode != endPara.ParentNode)
                throw new InvalidOperationException(
                    "Start and end paragraphs have different parents, cannot handle this scenario yet.");

            // Queremos copiar todos os parágrafos desde o parágrafo inicial até (e incluindo) o parágrafo final,
            // portanto, o nó no qual paramos é aquele após o parágrafo final.
            Node endNode = endPara.NextSibling;

            for (Node curNode = startPara; curNode != endNode; curNode = curNode.NextSibling)
            {
                //Isso cria uma cópia do nó atual e o importa (torna-o válido) no contexto
                // do documento de destino. Importar significa ajustar estilos e identificadores de lista corretamente.
                Node newNode = importer.ImportNode(curNode, true);

                dstNode.AppendChild(newNode);
            }
        }

Conclusão

Neste artigo, exploramos o código-fonte C# para entender como usar a função Copiar texto marcado como favorito de Aspose.Words para .NET. Seguimos um guia passo a passo para copiar o conteúdo de um marcador de um documento de origem para outro documento.

Perguntas frequentes para copiar texto marcado em documento do Word

P: Quais são os requisitos para usar o recurso “Copiar texto com marcadores” no Aspose.Words for .NET?

R: Para usar o recurso “Copiar texto com marcadores” no Aspose.Words for .NET, você precisa ter conhecimento básico da linguagem C#. Você também precisa de um ambiente de desenvolvimento .NET com a biblioteca Aspose.Words instalada.

P: Como carrego um documento de origem no Aspose.Words for .NET?

R: Para carregar um documento de origem no Aspose.Words for .NET, você pode usar oDocument class especificando o caminho do arquivo do documento. Aqui está um exemplo de código:

Document srcDoc = new Document("path/to/your/document.docx");

P: Como obter o conteúdo de um marcador específico em um documento de origem usando Aspose.Words for .NET?

R: Para obter o conteúdo de um marcador específico em um documento de origem usando Aspose.Words for .NET, você pode acessar oBookmarks propriedade do intervalo do documento de origem e use o nome do marcador para recuperar o marcador específico. Aqui está um exemplo de código:

Bookmark srcBookmark = srcDoc.Range.Bookmarks["BookmarkName"];

P: Como especificar o local da cópia do texto do marcador em um documento de destino usando Aspose.Words for .NET?

R: Para especificar onde deseja adicionar texto de marcador copiado em um documento de destino usando Aspose.Words for .NET, você pode navegar até o corpo da última seção do documento de destino. Você pode usar oLastSection propriedade para acessar a última seção e oBody propriedade para acessar o corpo dessa seção. Aqui está um exemplo de código:

CompositeNode dstNode = dstDoc.LastSection.Body;

P: Como importar e copiar o texto do marcador do documento de origem para o documento de destino usando Aspose.Words for .NET?

R: Para importar e copiar o texto do marcador de um documento de origem para um documento de destino usando Aspose.Words for .NET, você pode usar oNodeImporter classe especificando o documento de origem, o documento de destino e o modo de formatação a ser mantido. Então você pode usar oAppendBookmarkedText método para adicionar o texto do marcador no documento de destino. Aqui está um exemplo de código:

NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KeepSourceFormatting);
AppendBookmarkedText(import, srcBookmark, dstNode);

P: Como salvar um documento de destino após copiar o texto do marcador usando Aspose.Words for .NET?

R: Para salvar um documento de destino após copiar o texto de um marcador usando Aspose.Words for .NET, você pode usar oSave método doDocument objeto especificando o caminho do arquivo de destino. Aqui está um exemplo de código:

dstDoc.Save("path/to/your/destination-document.docx");