c# – iTextSharp国际文本

前端之家收集整理的这篇文章主要介绍了c# – iTextSharp国际文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在asp.net页面中有一个表,并尝试将其导出为PDF文件,我有几个未生成的PDF文件显示的国际字符,任何建议,

提前致谢

解决方法

正确显示替代字符集(俄语,中文,日语等)的关键是在创建BaseFont时使用IDENTITY_H编码.
Dim bfR As iTextSharp.text.pdf.BaseFont
  bfR = iTextSharp.text.pdf.BaseFont.CreateFont("MyFavoriteFont.ttf",iTextSharp.text.pdf.BaseFont.IDENTITY_H,iTextSharp.text.pdf.BaseFont.EMBEDDED)

IDENTITY_H为您选择的字体提供unicode支持,所以您应该能够显示几乎任何字符.我使用了俄语,希腊语和所有不同的欧洲语言信件.

编辑 – 2013年5月28日

这也适用于iTextSharp的v5.0.2.

编辑 – 2015年6月23日

下面给出了一个完整的代码示例(在C#中):

private void CreatePdf()
{
  string testText = "đĔĐěÇøç";
  string tmpFile = @"C:\test.pdf";
  string myFont = @"C:\<<valid path to the font you want>>\verdana.ttf";
  iTextSharp.text.Rectangle pgeSize = new iTextSharp.text.Rectangle(595,792);
  iTextSharp.text.Document doc = new iTextSharp.text.Document(pgeSize,10,10);
  iTextSharp.text.pdf.PdfWriter wrtr;
  wrtr = iTextSharp.text.pdf.PdfWriter.GetInstance(doc,new System.IO.FileStream(tmpFile,System.IO.FileMode.Create));
  doc.Open();
  doc.NewPage();
  iTextSharp.text.pdf.BaseFont bfR;
  bfR = iTextSharp.text.pdf.BaseFont.CreateFont(myFont,iTextSharp.text.pdf.BaseFont.EMBEDDED);

  iTextSharp.text.BaseColor clrBlack = 
      new iTextSharp.text.BaseColor(0,0);
  iTextSharp.text.Font fntHead =
      new iTextSharp.text.Font(bfR,12,iTextSharp.text.Font.NORMAL,clrBlack);

  iTextSharp.text.Paragraph pgr = 
      new iTextSharp.text.Paragraph(testText,fntHead);
  doc.Add(pgr);
  doc.Close();
}

这是创建的pdf文件的屏幕截图:

要记住的一个重要的一点是,如果您选择的字体不支持您要发送到pdf文件的字符,那么在iTextSharp中所做的任何事情都将会改变. Verdana很好地显示了我所知道的所有欧洲字体的字符.其他字体可能无法显示尽可能多的字符.

原文链接:https://www.f2er.com/csharp/96040.html

猜你在找的C#相关文章