SpecialChar

SpecialChar class

文档中特殊字符的基类。

要了解更多信息,请访问Aspose.Words 文档对象模型 (DOM)文档文章。

public class SpecialChar : Inline

特性

姓名描述
CustomNodeId { get; set; }指定自定义节点标识符。
virtual Document { get; }获取该节点所属的文档。
Font { get; }提供对此对象的字体格式的访问。
virtual IsComposite { get; }返回真的如果该节点可以包含其他节点.
IsDeleteRevision { get; }如果在启用更改跟踪时在 Microsoft Word 中删除了此对象,则返回 true。
IsFormatRevision { get; }如果在启用更改跟踪的情况下在 Microsoft Word 中更改了对象的格式,则返回 true。
IsInsertRevision { get; }如果在启用更改跟踪的情况下将此对象插入到 Microsoft Word 中,则返回 true。
IsMoveFromRevision { get; }返回真的如果启用更改跟踪时在 Microsoft Word 中移动(删除)此对象。
IsMoveToRevision { get; }返回真的如果在启用更改跟踪的情况下在 Microsoft Word 中移动(插入)此对象。
NextSibling { get; }获取紧随该节点的下一个节点。
override NodeType { get; }返回SpecialChar.
ParentNode { get; }获取此节点的直接父节点。
ParentParagraph { get; }检索父级Paragraph此节点的.
PreviousSibling { get; }获取紧邻此节点之前的节点。
Range { get; }返回一个Range表示此节点中包含的文档部分的对象。

方法

姓名描述
override Accept(DocumentVisitor)接受访客。
Clone(bool)创建节点的副本。
GetAncestor(NodeType)获取指定的第一个祖先NodeType.
GetAncestor(Type)获取指定对象类型的第一个祖先。
override GetText()获取该节点代表的特殊字符。
NextPreOrder(Node)根据先序树遍历算法获取下一个节点。
PreviousPreOrder(Node)根据先序树遍历算法获取前一个节点。
Remove()将自身从父级中删除。
ToString(SaveFormat)将节点的内容导出为指定格式的字符串。
ToString(SaveOptions)使用指定的保存选项将节点的内容导出到字符串中。

评论

Microsoft Word 文档可以包含许多特殊字符 ,它们表示字段、表单字段、形状、OLE 对象、脚注等。有关特殊字符的列表 ,请参阅ControlChar

SpecialChar是一个内联节点并且只能是Paragraph

SpecialCharchar 用作更具体的类 的基类,这些类表示 Aspose.Words 为其提供编程访问的特殊字符。 SpecialChar类本身也用于表示特殊字符 which Aspose.Words 不提供详细的编程访问。

例子

演示如何使用 DocumentVisitor 实现从文档中删除所有隐藏内容。

public void RemoveHiddenContentFromDocument()
{
    Document doc = new Document(MyDir + "Hidden content.docx");
    RemoveHiddenContentVisitor hiddenContentRemover = new RemoveHiddenContentVisitor();

    // 以下是可以接受文档访问者的三种类型的字段,
    // 这将允许它访问接受节点,然后以深度优先的方式遍历其子节点。
    // 1 - 段落节点:
    Paragraph para = (Paragraph)doc.GetChild(NodeType.Paragraph, 4, true);
    para.Accept(hiddenContentRemover);

    // 2 - 表节点:
    Table table = doc.FirstSection.Body.Tables[0];
    table.Accept(hiddenContentRemover);

    // 3 - 文档节点:
    doc.Accept(hiddenContentRemover);

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

/// <summary>
/// 删除所有标记为“隐藏内容”的已访问节点。
/// </summary>
public class RemoveHiddenContentVisitor : DocumentVisitor
{
    /// <summary>
    /// 在文档中遇到 FieldStart 节点时调用。
    /// </summary>
    public override VisitorAction VisitFieldStart(FieldStart fieldStart)
    {
        if (fieldStart.Font.Hidden)
            fieldStart.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到 FieldEnd 节点时调用。
    /// </summary>
    public override VisitorAction VisitFieldEnd(FieldEnd fieldEnd)
    {
        if (fieldEnd.Font.Hidden)
            fieldEnd.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到 FieldSeparator 节点时调用。
    /// </summary>
    public override VisitorAction VisitFieldSeparator(FieldSeparator fieldSeparator)
    {
        if (fieldSeparator.Font.Hidden)
            fieldSeparator.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到 Run 节点时调用。
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        if (run.Font.Hidden)
            run.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到段落节点时调用。
    /// </summary>
    public override VisitorAction VisitParagraphStart(Paragraph paragraph)
    {
        if (paragraph.ParagraphBreakFont.Hidden)
            paragraph.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到 FormField 时调用。
    /// </summary>
    public override VisitorAction VisitFormField(FormField formField)
    {
        if (formField.Font.Hidden)
            formField.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到 GroupShape 时调用。
    /// </summary>
    public override VisitorAction VisitGroupShapeStart(GroupShape groupShape)
    {
        if (groupShape.Font.Hidden)
            groupShape.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到 Shape 时调用。
    /// </summary>
    public override VisitorAction VisitShapeStart(Shape shape)
    {
        if (shape.Font.Hidden)
            shape.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到注释时调用。
    /// </summary>
    public override VisitorAction VisitCommentStart(Comment comment)
    {
        if (comment.Font.Hidden)
            comment.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到脚注时调用。
    /// </summary>
    public override VisitorAction VisitFootnoteStart(Footnote footnote)
    {
        if (footnote.Font.Hidden)
            footnote.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 在文档中遇到特殊字符时调用。
    /// </summary>
    public override VisitorAction VisitSpecialChar(SpecialChar specialChar)
    {
        if (specialChar.Font.Hidden)
            specialChar.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 文档中Table节点访问结束时调用。
    /// </summary>
    public override VisitorAction VisitTableEnd(Table table)
    {
        // 表格单元格内的内容可能具有隐藏内容标志,但表格本身不能。
        // 如果该表只有隐藏内容,则该访问者将删除所有内容,
        // 这样就不会剩下任何子节点了。
        // 因此,我们也可以将表格本身视为隐藏内容并将其删除。
        // 为空但没有隐藏内容的表格将具有内部带有空段落的单元格,
        // 该访问者不会删除它。
        if (!table.HasChildNodes)
            table.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 文档中某个Cell节点的访问结束时调用。
    /// </summary>
    public override VisitorAction VisitCellEnd(Cell cell)
    {
        if (!cell.HasChildNodes && cell.ParentNode != null)
            cell.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// 文档中Row节点访问结束时调用。
    /// </summary>
    public override VisitorAction VisitRowEnd(Row row)
    {
        if (!row.HasChildNodes && row.ParentNode != null)
            row.Remove();

        return VisitorAction.Continue;
    }
}

也可以看看