Cómo trabajar con texto en .NET
Esta guía muestra cómo trabajar con texto en Aspose.Words FOSS para .NET: formatear la fuente de una ejecución, formatear un párrafo, buscar y reemplazar texto con Range, agregar un comentario y convertir un párrafo en un elemento de lista. Aspose.Words FOSS para .NET está disponible a través de NuGet o compilando desde el código fuente.
Guía paso a paso
Paso 1: Obtener la biblioteca
Clona el repositorio y compílalo Aspose.Words.sln en configuración Release, luego agrega una referencia de proyecto a Aspose.Words.csproj de tu propio proyecto .NET, como se describe en el Guía de instalación. Agrega using Aspose.Words; en la parte superior de cualquier archivo que trabaje con texto.
Paso 2: Formatear la fuente de una ejecución
Un Run es un tramo de texto que comparte un conjunto de formato; su propiedad Text contiene el contenido en texto plano y su propiedad Font (un objeto Font) contiene el formato a nivel de carácter — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, y StrikeThrough entre otros. Font.ClearFormatting() restablece una ejecución a los valores predeterminados. Las ejecuciones de un párrafo están disponibles a través de su propiedad Runs, un RunCollection. Configurar las propiedades de fuente en DocumentBuilder.Font antes de escribir texto nuevo suele ser más simple que formatear objetos Run individuales después.
Paso 3: Formatear un párrafo
Paragraph.ParagraphFormat (un objeto ParagraphFormat) controla el diseño a nivel de párrafo: Alignment, sangrías (LeftIndent, RightIndent, FirstLineIndent), espaciado (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule) y el comportamiento de paginación (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() restablece estos a los valores predeterminados, y Paragraph.JoinRunsWithSameFormatting() combina runs adyacentes que tengan el mismo formato — útil después de que una serie de ediciones programáticas deja un párrafo con más runs de los necesarios.
Paso 4: Buscar y reemplazar texto con rango
Cada nodo que contiene contenido — un Document, Section, Paragraph o Run — expone un Range. Range.Text devuelve el texto plano de todo lo que hay dentro de ese rango, y Range.Replace(pattern, replacement) realiza una búsqueda y reemplazo limitado a ese rango: llámalo en el Range de un Paragraph para cambiar el texto solo en un párrafo, o en Document.Range para buscar en todo el documento. Range.Delete() elimina el contenido del rango por completo.
Paso 5: Añadir un comentario
Construye un Comment con new Comment(doc, author, initial, dateTime), establece su texto con SetText(text), y luego insértalo en el árbol como cualquier otro nodo. Comment.AddReply(author, initial, dateTime, text) adjunta una respuesta en hilo — que es un Comment — y RemoveReply(reply) / RemoveAllReplies() quitan las respuestas. Los comentarios de un documento se recopilan en un CommentCollection.
Paso 6: Convertir un párrafo en un elemento de lista
Paragraph.ListFormat (un objeto ListFormat) informa y controla si un párrafo participa en una lista: IsListItem y ListLevelNumber informan su estado actual. ApplyBulletDefault() convierte el párrafo en un elemento con viñeta predeterminada y ApplyNumberDefault() en un elemento numerado predeterminado; ListIndent() / ListOutdent() cambian su nivel de anidamiento, y RemoveNumbers() lo vuelve a convertir en un párrafo simple.
Problemas comunes y soluciones
Formatear uno Run’s la fuente no cambia el texto adyacente. El texto adyacente es diferente Run con su propio Font instancia. Ya sea localizar y formatear cada elemento afectado Run, o establecer el formato en DocumentBuilder.Font antes de escribir texto nuevo.
Range.Replace cambia texto fuera del área prevista. Replace se llamó en Document.Range en lugar del rango de un nodo más estrecho. Llámalo en el específico Paragraph or Section cuyo texto debería cambiar.
Un párrafo parece un elemento de lista con viñetas pero IsListItem is false. La viñeta es texto escrito, no un formato de lista real. Aplícalo con ListFormat.ApplyBulletDefault() en su lugar.
El documento termina con mucho más Run nodos de lo esperado. Ediciones programáticas pequeñas repetidas dividen secuencias sin volver a unirlas. Llama Paragraph.JoinRunsWithSameFormatting() después de un lote de ediciones.
Preguntas frecuentes
¿Cuál es la diferencia entre Run y Paragraph?
Un Run es un segmento de texto que comparte un conjunto de formato de caracteres (Font). Un Paragraph es el nodo compuesto que contiene uno o más runs más el formato a nivel de párrafo (ParagraphFormat).
¿Cómo leo todo el texto de un documento o de una sola sección?
Lea la propiedad Text del Range de ese nodo — document.Range.Text o section.Range.Text.
¿Cómo reemplazo texto dentro de un solo párrafo, sin el documento completo?
Llame a Replace(pattern, replacement) en el Range de ese Paragraph, no en Document.Range.
¿Cómo respondo a un comentario existente?
Llame a Comment.AddReply(author, initial, dateTime, text) en la instancia original de Comment.
¿Cómo convierto un elemento de lista numerada en un párrafo simple?
Llama a RemoveNumbers() en el ListFormat de ese párrafo.