【问题标题】:Saving PDF with cyrillic text in Unity3D using iTextSharp使用 iTextSharp 在 Unity3D 中保存带有西里尔文文本的 PDF
【发布时间】:2015-05-07 05:47:28
【问题描述】:

我使用该代码创建了一个 BaseFont

string combineStr                       = Path.Combine(Application.dataPath+"/Resources/Fonts", "Calibri Regular.ttf");
BaseFont bf                             = BaseFont.CreateFont(combineStr, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font titleFont          = new iTextSharp.text.Font(bf, 10f, iTextSharp.text.Font.NORMAL, BaseColor.BLACK);

在 Unity 中测试一切正常,我的西里尔字形运行良好,但在 WindowsPalyer 构建中出现错误

ArgumentException: Encoding name 'windows-1252' not supported
Paremeter name: name.

在这里找不到任何问题.. 检查了所有内容,以及我如何看到我的 BaseFont 代码是正确的。我的情况有什么问题? 附言我也尝试过其他支持西里尔文的字体,但没有任何帮助。

【问题讨论】:

  • 1.为什么不嵌入字体?这意味着 PDF 不会在每个平台上都清晰易读。 2.你使用的是Unicode,为什么需要windows-1252编码? 3. 你说的是西里尔字形,但西里尔字母的编码是 1251 而不是 1252。所有这些都让人相信你没有告诉我们你应该告诉我们的一切。我不知道 Unity3d 是什么,所以我不知道是什么引发了异常。不过,它看起来不像是 iTextSharp 异常。您是否有机会传递使用 windows-1252 编码的string 编码?也许客户端不支持?
  • 感谢您的回复 1)我在互联网上找到了该解决方案,人们询问“如何在 iTextSharp 中使用西里尔字母”当然我已经尝试将其嵌入 2)相同 - 来自解决方案。但是我在考虑 UTF-8,但没有在 iTextSharp 中找到解决方案。抱歉,我刚刚探索了该库 1 天,不太了解,不确定是否会经常使用它 3)我没有选择 BaseFont.CP1252 。 . .我不知道为什么错误显示我的编码。在互联网的解决方案中,每个人都推荐 BaseFont.IDENTITY_H
  • 这里是完整的错误消息link
  • Bruno 谢谢你,因为你认为这不是 iTextSharp 错误,所以我在缺少 .dll 中找到了解决方案
  • 太棒了!如果您将该评论添加为答案,那就太好了,以便人们看到问题已解决。

标签: c# pdf fonts unity3d itextsharp


【解决方案1】:

OP 为问题添加了解决方案。我将其从问题中删除,并将其添加为真正的答案:

这里的问题是独立播放器中缺少 I18N.dll 和 I18N.West.dll。但它们在编辑器中可用。这就是它在编辑器中工作但在独立播放器中不起作用的原因。

解决方案:将这些 DLL 放入您的项目中(最好放在 System.Data.dll 旁边),这样,它们也可以在独立播放器中使用。

另请参阅 Unity Answers 上的 CodePage 1252 not supported - works in editor but not in standalone player

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多