繁体   English   中英

如何更改节内文本的字体名称?

[英]How to change the font name of text inside a section?

题:

我有一个包含许多其他文档的文档。 在特定的时刻,我需要更改特定部分中的所有文本。 我参考了其字体需要更改的部分。

如何仅更改特定部分内文本的字体?


背景:

出于某种原因,当将一个文档的内容插入到当前文档中时,所有字段的字体都从“ Times New Roman”(这是我要插入的文档设置为)变为“ Courier”(是我要插入的当前文档的字体)。

因此,我离开了,只是尝试以编程方式更改字体。 搜索文档不会产生更改节的字体的结果。

请使用以下代码更改节内文本的字体名称:

Document doc = new Document(MyDir + @"input.docx");

Section sec = doc.LastSection;

FontChanger changer = new FontChanger();
sec.Accept(changer);

doc.Save(MyDir + @"17.4.docx");

/// <summary>
/// Class inherited from DocumentVisitor, that changes font.
/// </summary>
class FontChanger : DocumentVisitor
{
    /// <summary>
    /// Called when a FieldEnd node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFieldEnd(FieldEnd fieldEnd)
    {
        //Simply change font name
        ResetFont(fieldEnd.Font);
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a FieldSeparator node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFieldSeparator(FieldSeparator fieldSeparator)
    {
        ResetFont(fieldSeparator.Font);
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a FieldStart node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFieldStart(FieldStart fieldStart)
    {
        ResetFont(fieldStart.Font);
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a Footnote end is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFootnoteEnd(Footnote footnote)
    {
        ResetFont(footnote.Font);
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a FormField node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitFormField(FormField formField)
    {
        ResetFont(formField.Font);
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a Paragraph end is encountered in the document.
    /// </summary>
    public override VisitorAction VisitParagraphEnd(Paragraph paragraph)
    {
        ResetFont(paragraph.ParagraphBreakFont);
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a Run node is encountered in the document.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        ResetFont(run.Font);
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Called when a SpecialChar is encountered in the document.
    /// </summary>
    public override VisitorAction VisitSpecialChar(SpecialChar specialChar)
    {
        ResetFont(specialChar.Font);
        return VisitorAction.Continue;
    }

    private void ResetFont(Aspose.Words.Font font)
    {
        // Add your font changing code here
        font.Name = mNewFontName;
        font.Size = mNewFontSize;
    }

    private double mNewFontSize = 18;
    private string mNewFontName = "Times New Roman";
}

希望这可以帮助。

我与Aspose一起担任开发人员推广员

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM