【问题标题】:How to display chinese characters in pdf file created with iTextSharp如何在使用 iTextSharp 创建的 pdf 文件中显示中文字符
【发布时间】:2023-03-18 11:35:01
【问题描述】:

我有包含一些英文字符和一些中文字符的字符串数据。我正在使用 iTextSharp 创建一个包含此数据的 pdf 文件。创建pdf文件后,当我打开它时,pdf只包含英文字符。它不显示中文字符。 你能告诉我如何在pdf文件中显示汉字吗?请注意,我正在写入 pdf 的字符串数据包含动态语言字符,即有时是英文,有时是中文,有时是日文等。

【问题讨论】:

  • 请显示您的代码的相关部分。 IE。尤其是你定义你使用的字体的代码。
  • 我的代码中没有定义任何字体。
  • 在这种情况下,看看布鲁诺的回答。
  • 在这里找到了这个答案的另一个变体——它使用 Arial Unicode 字体,对我来说效果更好。 stackoverflow.com/questions/23958538/…

标签: c# itextsharp


【解决方案1】:

这在 iText(Sharp) 文档中有解释。当您有一个包含不同语言字形的字符串时,您需要使用FontSelector,如this example 所示。

FontSelector selector = new FontSelector();
selector.AddFont(FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12));
selector.AddFont(FontFactory.GetFont("MSung-Light", "UniCNS-UCS2-H", BaseFont.NOT_EMBEDDED));
Phrase ph = selector.Process(TEXT);
document.Add(new Paragraph(ph)); 

在这种情况下,我首先将 Times Roman 添加到字体选择器中,然后是 MSung-Light。现在TEXT 中的所有英文字符都将使用 Times Roman。您说缺少的字符将使用 MSung-Light 渲染。如果您更改 MSung-Light 和 Times Roman 的顺序,完整的TEXT 将在 MSung-Light 中呈现,因此请确保您明智地选择您的字体。顺序很重要,TEXT 中未定义字体的每个字符都将丢失。

【讨论】:

  • 谢谢布鲁诺。我尝试了您提供的解决方案。有效。非常感谢。
  • 如果某个答案解决了问题,您可以接受。这样,有相同问题的人就会将其视为解决方案。
【解决方案2】:

“SIMSUN.ttf”对我有用。你可以从网上下载它。 https://www.wfonts.com/font/simsun

【讨论】:

  • 请不要使用位图图像显示代码,而是使用文本。堆栈溢出提供了格式化代码和应用语法突出显示的方法。此外,您应该展示如何创建 test.font 对象:显示某些字形的问题通常是由不正确的字体实例化引起的。
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 2021-03-26
相关资源
最近更新 更多