SpecialChar

SpecialChar class

Базовый класс для специальных символов в документе.

Чтобы узнать больше, посетитеОбъектная модель документа Aspose.Words (DOM) документальная статья.

public class SpecialChar : Inline

Характеристики

ИмяОписание
CustomNodeId { get; set; }Указывает пользовательский идентификатор узла.
virtual Document { get; }Получает документ, к которому принадлежит этот узел.
Font { get; }Предоставляет доступ к форматированию шрифта этого объекта.
virtual IsComposite { get; }Возвратистинный если этот узел может содержать другие узлы.
IsDeleteRevision { get; }Возвращает значение true, если этот объект был удален в Microsoft Word при включенном отслеживании изменений.
IsFormatRevision { get; }Возвращает значение true, если форматирование объекта было изменено в Microsoft Word при включенном отслеживании изменений.
IsInsertRevision { get; }Возвращает значение true, если этот объект был вставлен в Microsoft Word при включенном отслеживании изменений.
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.

SpecialChar char используется как базовый класс для более конкретных классов , которые представляют специальные символы, к которым Aspose.Words предоставляет программный доступ. SpecialCharкласс также используется сам по себе для представления специального символа, для которого 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>
    /// Вызывается при обнаружении фигуры в документе.
    /// </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)
    {
        Console.WriteLine(specialChar.GetText());

        if (specialChar.Font.Hidden)
            specialChar.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Вызывается, когда посещение узла таблицы в документе завершено.
    /// </summary>
    public override VisitorAction VisitTableEnd(Table table)
    {
        // Содержимое ячеек таблицы может иметь флаг скрытого содержимого, но сами таблицы — нет.
        // Если бы в этой таблице не было ничего, кроме скрытого контента, этот посетитель удалил бы его весь,
        // и не останется ни одного дочернего узла.
        // Таким образом, мы также можем рассматривать саму таблицу как скрытое содержимое и удалить ее.
        // Таблицы, которые пусты, но не имеют скрытого содержимого, будут иметь ячейки с пустыми абзацами внутри,
        // который этот посетитель не удалит.
        if (!table.HasChildNodes)
            table.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Вызывается, когда посещение узла ячейки в документе завершено.
    /// </summary>
    public override VisitorAction VisitCellEnd(Cell cell)
    {
        if (!cell.HasChildNodes && cell.ParentNode != null)
            cell.Remove();

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Вызывается, когда посещение узла строки в документе завершено.
    /// </summary>
    public override VisitorAction VisitRowEnd(Row row)
    {
        if (!row.HasChildNodes && row.ParentNode != null)
            row.Remove();

        return VisitorAction.Continue;
    }
}

Смотрите также