C#使用iTextSharp导出richTextBox内容到PDF时希腊字符不显示
解决iTextSharp导出PDF希腊字符无法显示问题
问题根因
iTextSharp默认使用的Helvetica字体仅支持基础拉丁字符集,不包含希腊字符的字形,所以会出现显示异常。
修复步骤
你只需要手动创建一个支持希腊字符的字体实例,在生成Paragraph时指定使用该字体即可,修改后的代码如下:
using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; using System.Windows.Forms; SaveFileDialog sfd = new SaveFileDialog(); private void button1_Click(object sender, EventArgs e) { sfd.Title = "Save As PDF"; sfd.Filter = "(*.pdf)|*.pdf"; sfd.InitialDirectory = @"C:\"; if (sfd.ShowDialog() == DialogResult.OK) { Document doc = new Document(); PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create)); doc.Open(); // 新增:创建支持希腊字符的字体,这里使用Arial Unicode MS,你也可以替换为其他支持希腊字符的字体 // 参数说明:字体文件路径,编码格式(Identity-H表示Unicode编码,支持全字符集),是否嵌入字体到PDF BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font customFont = new Font(baseFont, 12); // 第二个参数是字体大小,可自行调整 // 生成段落时传入自定义字体 doc.Add(new Paragraph(richTextBox1.Text, customFont)); doc.Close(); } }
注意事项
- 如果你不想依赖系统路径的字体,可以将支持希腊字符的字体文件放到程序运行目录,修改
CreateFont的第一个参数为相对路径即可 - 除了Arial Unicode MS,微软雅黑、宋体等系统自带的中文字体也都支持希腊字符,你可以根据需求替换字体路径
- 设置
BaseFont.EMBEDDED会把字体的对应字形嵌入PDF文件,确保文件在其他设备打开时也能正常显示希腊字符
内容的提问来源于stack exchange,提问作者arch1
相关产品推荐
相关产品推荐

