【问题标题】:Default font for RDLC reportRDLC 报告的默认字体
【发布时间】:2012-10-10 08:22:51
【问题描述】:

是否可以在 RDLC 报告中设置默认字体? 我有报告我想更改字体,因为我不想在报告的每个元素中更改它。

【问题讨论】:

    标签: c# reporting-services rdlc


    【解决方案1】:

    无法使用设计界面更改用于整个报表的字体。但是,如果您尝试用另一种字体替换一种字体,例如Tahoma 与 Verdana,然后您可以打开代码视图(查看 > 代码)并在那里进行查找和替换。

    请注意,Arial 是 Reporting Services 报表的默认字体,因此该字体仅在字体代码中定义, Arial 除外。如果您需要从 Arial 更改为另一种字体,则必须在设计器中手动执行此操作。

    【讨论】:

    • 好伤心。这不是好消息。您可以做的(但这将是非常自定义的)是编写一个正则表达式解析器来查找所有没有指定字体的文本框标签并指定一个。或者,使用 XML 在每个文本框节点中查找样式节点,并查找是否指定了字体系列节点。我要试试后者。
    【解决方案2】:

    有办法做到这一点。这实际上相当简单。在开始之前备份您的 rdl 文件。这个答案需要编写一个简单的应用程序:

    将 rdl 作为 XML 文档打开。 查找所有 TextRun 节点。 在每个中寻找一个 Style 节点。 如果没有找到 Style 节点,请添加一个其中包含指定所需字体的 FontFamily 节点。 如果找到 Style 节点,则查找 FontFamily 节点。如果找到它,您可以保留它或将值替换为所需的字体,具体取决于您的要求。如果没有 FontFamily 节点,则添加指定字体。

    ETA:我有代码,它对我来说非常有用。请注意,这是破坏性的,即。您的文件将被覆盖。

    pivate static void AddFontsToRdlc(string fileName, string defaultFont)
    {
      if (!File.Exists(fileName))
      {
        // Report file does not exist
        return;
      }
      XmlDocument document = new XmlDocument();
      document.Load(fileName);
      string documentNamespace = document.DocumentElement.NamespaceURI;
      XmlNodeList nodes = document.GetElementsByTagName("TextRun");
      bool foundStyle = false;
      bool foundFontFamily = false;
      foreach (XmlNode node in nodes)
      {
        foundStyle = false;
        foundFontFamily = false;
        foreach (XmlNode childNode in node.ChildNodes)
        {
          if (childNode.Name == "Style")
          {
            foundStyle = true;
            foreach (XmlNode styleNode in childNode.ChildNodes)
            {
              if (styleNode.Name == "FontFamily")
              {
                // Change the font here if changing all fonts to the default font
                // Alternatively, specify what font should change to what font with a switch
                foundFontFamily = true;
                break;
              }
            }
            if (!foundFontFamily)
            {
              XmlElement fontElement = document.CreateElement("FontFamily", documentNamespace);
              fontElement.InnerText = defaultFont;
              childNode.AppendChild(fontElement);
            }
            break;
          }
        }
        if (!foundStyle)
        {
          XmlNode styleElement = document.CreateElement("Style", documentNamespace);
          XmlElement fontElement = document.CreateElement("FontFamily", documentNamespace);
          fontElement.InnerText = defaultFont;
          styleElement.AppendChild(fontElement);
          node.AppendChild(styleElement);
        }
      }
      document.Save(fileName);
    }
    

    【讨论】:

    • 或者,在 notepad++ 中打开 rdlc 文件,搜索文本框元素(如果只有一两个)并在样式子节点中输入字体系列的 xml 元素。 +1
    • 太好了!!我在这里把它放在一个简单的解决方案中:1drv.ms/f/s!AqgVrjYd-3PgixMJv5WqbOO5G7Zm
    【解决方案3】:

    转到工具 > 选项 > 环境 > 字体和颜色 然后将其更改为您想要的字体。

    【讨论】:

    • 这将设置在 Visual Studio 环境中使用的字体。发帖人询问如何在报告中设置字体。
    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多