SpecialChar

SpecialChar class

Clase base para caracteres especiales en el documento.

public class SpecialChar : Inline

Propiedades

Nombre Descripción
CustomNodeId { get; set; } Especifica el identificador de nodo personalizado.
virtual Document { get; } Obtiene el documento al que pertenece este nodo.
Font { get; } Proporciona acceso al formato de fuente de este objeto.
virtual IsComposite { get; } Devuelve verdadero si este nodo puede contener otros nodos.
IsDeleteRevision { get; } Devuelve verdadero si este objeto se eliminó en Microsoft Word mientras el seguimiento de cambios estaba habilitado.
IsFormatRevision { get; } Devuelve verdadero si se cambió el formato del objeto en Microsoft Word mientras estaba habilitado el seguimiento de cambios.
IsInsertRevision { get; } Devuelve verdadero si este objeto se insertó en Microsoft Word mientras el seguimiento de cambios estaba habilitado.
IsMoveFromRevision { get; } Devoluciones verdadero si este objeto se movió (eliminó) en Microsoft Word mientras el seguimiento de cambios estaba habilitado.
IsMoveToRevision { get; } Devoluciones verdadero si este objeto se movió (insertó) en Microsoft Word mientras el seguimiento de cambios estaba habilitado.
NextSibling { get; } Obtiene el nodo que sigue inmediatamente a este nodo.
override NodeType { get; } Devoluciones NodeType.SpecialChar .
ParentNode { get; } Obtiene el padre inmediato de este nodo.
ParentParagraph { get; } Recupera el padreParagraph de este nodo.
PreviousSibling { get; } Obtiene el nodo inmediatamente anterior a este nodo.
Range { get; } Devuelve un Rango objeto que representa la parte de un documento que está contenido en este nodo.

Métodos

Nombre Descripción
override Accept(DocumentVisitor) Acepta un visitante.
Clone(bool) Crea un duplicado del nodo.
GetAncestor(NodeType) Obtiene el primer ancestro del especificadoNodeType .
GetAncestor(Type) Obtiene el primer ancestro del tipo de objeto especificado.
override GetText() Obtiene el carácter especial que representa este nodo.
NextPreOrder(Node) Obtiene el siguiente nodo de acuerdo con el algoritmo de recorrido del árbol de pedido previo.
PreviousPreOrder(Node) Obtiene el nodo anterior de acuerdo con el algoritmo de recorrido del árbol de pedido previo.
Remove() Se elimina a sí mismo del padre.
ToString(SaveFormat) Exporta el contenido del nodo a una cadena en el formato especificado.
ToString(SaveOptions) Exporta el contenido del nodo a una cadena utilizando las opciones de guardado especificadas.

Observaciones

Un documento de Microsoft Word puede incluir una serie de caracteres especiales que representan campos, campos de formulario, formas, objetos OLE, notas al pie, etc. Para ver la lista de caracteres especiales, consulteControlChar.

Caracter especial es un nodo en línea y solo puede ser un hijo de Párrafo.

Caracter especial char se usa como clase base para clases más específicas que representan caracteres especiales para los que Aspose.Words proporciona acceso programático. El Caracter especial class también se usa para representar un carácter especial para el cual Aspose.Words no proporciona acceso programático detallado.

Ejemplos

Muestra cómo usar una implementación de DocumentVisitor para eliminar todo el contenido oculto de un documento.

{
    Document doc = new Document(MyDir + "Hidden content.docx");

    RemoveHiddenContentVisitor hiddenContentRemover = new RemoveHiddenContentVisitor();

    // A continuación hay tres tipos de campos que pueden aceptar un visitante del documento,
    // lo que le permitirá visitar el nodo de aceptación y luego atravesar sus nodos secundarios en profundidad.
    // 1 - Nodo de párrafo:
    Paragraph para = (Paragraph) doc.GetChild(NodeType.Paragraph, 4, true);
    para.Accept(hiddenContentRemover);

    // 2 - Nodo de tabla:
    Table table = doc.FirstSection.Body.Tables[0];
    table.Accept(hiddenContentRemover);

    // 3 - Nodo de documento:
    doc.Accept(hiddenContentRemover);

    doc.Save(ArtifactsDir + "Font.RemoveHiddenContentFromDocument.docx");

/// <summary>
/// Elimina todos los nodos visitados marcados como "contenido oculto".
/// </summary>
public class RemoveHiddenContentVisitor : DocumentVisitor
{
    /// <summary>
    /// Llamado cuando se encuentra un nodo FieldStart en el documento.
    /// </summary>
    public override VisitorAction VisitFieldStart(FieldStart fieldStart)
    {
        if (fieldStart.Font.Hidden)
            fieldStart.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra un nodo FieldEnd en el documento.
    /// </summary>
    public override VisitorAction VisitFieldEnd(FieldEnd fieldEnd)
    {
        if (fieldEnd.Font.Hidden)
            fieldEnd.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra un nodo FieldSeparator en el documento.
    /// </summary>
    public override VisitorAction VisitFieldSeparator(FieldSeparator fieldSeparator)
    {
        if (fieldSeparator.Font.Hidden)
            fieldSeparator.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra un nodo Ejecutar en el documento.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        if (run.Font.Hidden)
            run.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra un nodo de párrafo en el documento.
    /// </summary>
    public override VisitorAction VisitParagraphStart(Paragraph paragraph)
    {
        if (paragraph.ParagraphBreakFont.Hidden)
            paragraph.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra un FormField en el documento.
    /// </summary>
    public override VisitorAction VisitFormField(FormField formField)
    {
        if (formField.Font.Hidden)
            formField.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra un GroupShape en el documento.
    /// </summary>
    public override VisitorAction VisitGroupShapeStart(GroupShape groupShape)
    {
        if (groupShape.Font.Hidden)
            groupShape.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra una Forma en el documento.
    /// </summary>
    public override VisitorAction VisitShapeStart(Shape shape)
    {
        if (shape.Font.Hidden)
            shape.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Se llama cuando se encuentra un comentario en el documento.
    /// </summary>
    public override VisitorAction VisitCommentStart(Comment comment)
    {
        if (comment.Font.Hidden)
            comment.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Llamado cuando se encuentra una nota al pie en el documento.
    /// </summary>
    public override VisitorAction VisitFootnoteStart(Footnote footnote)
    {
        if (footnote.Font.Hidden)
            footnote.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Se llama cuando se encuentra un carácter especial en el documento.
    /// </summary>
    public override VisitorAction VisitSpecialChar(SpecialChar specialChar)
    {
        if (specialChar.Font.Hidden)
            specialChar.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Se llama cuando se finaliza la visita de un nodo Tabla en el documento.
    /// </summary>
    public override VisitorAction VisitTableEnd(Table table)
    {
        // El contenido dentro de las celdas de la tabla puede tener el indicador de contenido oculto, pero las tablas en sí no pueden.
        // Si esta tabla no tuviera nada más que contenido oculto, este visitante lo habría eliminado todo,
        // y no quedarían nodos secundarios.
        // Por lo tanto, también podemos tratar la tabla en sí misma como contenido oculto y eliminarla.
        // Las tablas que están vacías pero no tienen contenido oculto tendrán celdas con párrafos vacíos dentro,
        // que este visitante no eliminará.
        if (!table.HasChildNodes)
            table.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Se llama cuando se finaliza la visita de un nodo Cell en el documento.
    /// </summary>
    public override VisitorAction VisitCellEnd(Cell cell)
    {
        if (!cell.HasChildNodes && cell.ParentNode != null)
            cell.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Se llama cuando finaliza la visita de un nodo Fila en el documento.
    /// </summary>
    public override VisitorAction VisitRowEnd(Row row)
    {
        if (!row.HasChildNodes && row.ParentNode != null)
            row.Remove();

        return VisitorAction.Continue;
    }
}

Ver también