2012-06-25 5 views
3

iTextSharp не отображает японский шрифт. Я нашел solution, но когда я компилирую, я получаю сообщение об ошибке сказав:ItextSharp не отображает японский шрифт

шрифт 'STSong-Light' с 'UniGB-UCS2-H' не распознается.

Вот мой исходный код:

BaseFont.AddToResourceSearch(serverPath + "\\lib\\iTextAsian.dll"); 
BaseFont.AddToResourceSearch(serverPath + "\\lib\\iTextAsianCmaps.dll"); 
BaseFont font = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);  

using (Document document = new Document()) 
{ 
    using (PdfSmartCopy copy = new PdfSmartCopy(
     document, new FileStream(directoryOutPdf + nameOutPdf, FileMode.Create)) 
    ) 
    { 
     document.Open(); 

     // generate one page per statement   
     for (int i = 0; i < countBlank.Count; i++) 
     {       
      // replace this with your PDF form template   
      PdfReader reader = new PdfReader(pdfTemplatePath + @"\EmptyTemplateBankBlank_2012.pdf"); 
      using (var ms = new MemoryStream()) 
      { 
       using (PdfStamper stamper = new PdfStamper(reader, ms)) 
       { 
        AcroFields form = stamper.AcroFields; 
        form.SetFieldProperty("Info", "textfont", font, null); 
        form.SetField("Info", "_源泉徴収票");                 
        stamper.FormFlattening = true; 
       } 
       reader = new PdfReader(ms.ToArray()); 

       copy.AddPage(copy.GetImportedPage(reader, 1)); 
      } 
     } 
    } 
} 

Я думаю, это потому, что я не устанавливал шрифт STSong-Light. К сожалению, я не смог найти STSong-Light и, следовательно, должен был установить Stsong шрифт, но он все равно не работает.

String fontPath = Path.Combine(serverPath + "\\Fonts", "STSONG.ttf"); 

BaseFont baseFont = BaseFont.CreateFont(fontPath, "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); 
Font font = new Font(baseFont, 12, Font.NORMAL); 

ответ

3

Установите SubstitutionFont после создания PdfStamper:

stamper.AcroFields.AddSubstitutionFont(myFont.BaseFont); 
+0

VahidN спасибо большое !!! – Max

Смежные вопросы