You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:27:04