【问题标题】:Some special characters have rendering problem as a pdf file in LocalReport某些特殊字符在 LocalReport 中呈现为 pdf 文件存在问题
【发布时间】:2019-10-01 06:13:04
【问题描述】:

我正在使用 Microsoft.Reporting.WinForms.dll 将我的 RDLC 呈现为 pdf 文件,但是当我使用 adobe reader 打开 pdf 文件时,我遇到了一些特殊土耳其语字符的问题。在 pdf 中,它们看起来很正常,但是当我尝试使用 CTRL + F 在 pdf 文件中搜索一些单词。我找不到这些词。即使我的 pdf 文件包含这些土耳其语字符。另外,当我将这些单词复制粘贴到文件中时,我会得到像???????????????????????????? 这样的字符。有趣的是,我也使用相同的 dll 将我的 RDLC 呈现为 excel 文件。我使用相同的类相同的代码和相同的方法。我在 excel 文件中没有这个问题。

我使用 WinForms.dll 中的byte[] Render(string format); 方法进行渲染。也许某些特殊字符的 ASCII 码超出了字节数组的范围,可能正因为如此,它无法为 pdf 格式呈现每个字符,但我不确定。

谢谢...

【问题讨论】:

  • 能贴出所有相关代码吗?
  • 这种情况是否只发生在adobe阅读器或其他pdf阅读器中?,您使用的是哪种字体?
  • .NET 字符串是 Unicode,而不是 ASCII。没有特殊字符。如果使用错误的代码页读取 ASCII 文本,或者使用错误的代码页在屏幕上显示 ASCII 文本,则会出现这样的方块。数据从何而来?它来自varchar 或nvarchar 字段吗?如何检索值?
  • 不知何故,在某个地方,ASCII 文本被存储而不是 Unicode。也许数据库使用varchar 字段而不是nvarchar,并且客户端使用与数据库不同 的排序规则。或者数据存储时使用了错误的排序规则。
  • @Bacon 实际上我对所有 pdf 阅读器都有同样的问题。我在 RDLC 中使用了许多字体。如Roboto、Segoe UI Light、Roboto Condensed、Segoe UI、Segoe UI Black。每种字体都有相同的问题。

标签: c# .net pdf render rdlc


【解决方案1】:

根据microsoft article,在 sql server 2014 中修复了特殊字符的问题,相应的 reportviewer dll 将是 2015 运行时。

也许你应该升级

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我的应用程序使用 LocalReport 生成 PDF。 我的解决方案是: 1- 修改 RDLC XML 架构以使用 2016 版本。改变你为此拥有的东西。

    <Report xmlns = "http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns: rd = "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">.
    

    然后,修改schema,它不再和以前的版本一样了(DataSources上...)

    2- 从 DeviceInfo 中删除 &lt;EmbedFonts&gt;None&lt;/EmbedFonts&gt;。

    通过这些更改,我可以很好地绘制和打印特殊字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      相关资源
      最近更新 更多