“找不到编码1252数据” iTextSharp使用日语字体

时间:2018-10-25 01:06:35

标签: c# fonts itext

我使用Unity2018.2.3f1和iTextSharp。 尽管可以创建基本的PDF,但是日语字体不能在Windows上使用。 以下源代码在Mac上可以正常工作。

try {
    PdfReader reader = new PdfReader ( basePath );
    Document document = new Document ( reader.GetPageSize ( 1 ) );

    FileStream fileStream = new FileStream ( newPath, FileMode.Create, FileAccess.Write );
    PdfWriter writer = PdfWriter.GetInstance ( document, fileStream );
    document.Open ();

    PdfContentByte pdfContentByte = writer.DirectContent;
    PdfImportedPage page = writer.GetImportedPage ( reader, 1 );
    pdfContentByte.AddTemplate ( page, 0, 0 );

    string fontName = Path.Combine ( Application.streamingAssetsPath, "mplus-1c-medium.ttf" );
    BaseFont bf = BaseFont.CreateFont ( fontName, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED );
    pdfContentByte.SetFontAndSize ( bf, 10.0f );

    pdfContentByte.BeginText ();
    pdfContentByte.ShowText ( new PdfTextArray ( "文字列" ) );
    pdfContentByte.SetFontAndSize ( bf, 20.0f );
    pdfContentByte.MoveText ( 50, 50 );
    pdfContentByte.ShowText ( new PdfTextArray ( "文字列1" ) );
    pdfContentByte.ShowText ( new PdfTextArray ( "2" ) );
    pdfContentByte.EndText ();

    document.Close ();
    fileStream.Close ();
    writer.Close ();
    reader.Close ();

} catch (Exception ex) {
    handyAlert.text = "Error1:"+ex.Message;
    Debug.Log ( ex.StackTrace);
}

但是,在Windows上会发生以下错误。

  

找不到编码1252数据。确保你有正确的   国际代码集程序集已安装并启用。

所使用的字体如下。由于它可以在Mac上正常运行,因此我认为字体文件本身没有问题。 https://mplus-fonts.osdn.jp

此外,如果按如下方式构成BaseFont.CreateFont的一部分,则除日语以外的数字部分将正常书写。

BaseFont bf = BaseFont.CreateFont ( BaseFont.TIMES_ROMAN, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED );

请告诉我如何解决。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。我需要“ I18N.dll”和“ I18N.West.dll”。 在Unity项目的Plugins文件夹中安装了这两个dll并构建应用程序后,它就可以正常工作。

https://answers.unity.com/questions/42955/codepage-1252-not-supported-works-in-editor-but-no.html