«Кодировка 1252 данных не найдена» iTextSharp использует японский шрифт - PullRequest
0 голосов
/ 25 октября 2018

Я использую 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 голосов
/ 25 октября 2018

Я нашел решение.Мне нужны "I18N.dll" и "I18N.West.dll".После установки этих двух библиотек в папку «Плагины» проекта Unity и создания приложения все работало нормально.

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

...