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

C#中导出含英文与阿拉伯文的GridView至PDF的方法求助

GridView导出PDF阿拉伯文显示问题解决方法
  • 嵌入阿拉伯文支持字体
    PDF导出库默认字体通常不包含阿拉伯文字符,需手动嵌入支持阿拉伯文的字体(如Arial Unicode MS、Amiri等)。以iTextSharp为例,需指定字体路径并设置编码为IDENTITY_H以支持复杂脚本:

    BaseFont arabicFont = BaseFont.CreateFont(@"C:\Windows\Fonts\arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font arabicPdfFont = new Font(arabicFont, 12);
    
  • 设置文本从右到左(RTL)方向
    阿拉伯文是右到左书写体系,需为PDF单元格设置RUN_DIRECTION_RTL属性,同时确保GridView中对应列的文本方向在前端或后台设置为RTL:

    foreach (GridViewRow row in GridView1.Rows)
    {
        foreach (TableCell cell in row.Cells)
        {
            PdfPCell pdfCell = new PdfPCell(new Phrase(cell.Text, arabicPdfFont));
            pdfCell.RunDirection = PdfWriter.RUN_DIRECTION_RTL; // 启用右到左排版
            pdfTable.AddCell(pdfCell);
        }
    }
    
  • 确保UTF-8编码输出
    导出过程中强制使用UTF-8编码,避免字符转义或丢失:

    // 示例:将GridView内容转为UTF-8编码的HTML字符串(若通过HTML转PDF的方式)
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.RenderControl(hw);
    string htmlContent = sw.ToString();
    byte[] utf8Bytes = Encoding.UTF8.GetBytes(htmlContent);
    
  • 第三方库适配注意事项
    若使用Syncfusion、DevExpress等第三方导出组件,需在组件设置中:

    • 指定阿拉伯文兼容字体
    • 开启RTL文本方向支持
    • 启用Unicode字符嵌入

内容的提问来源于stack exchange,提问作者Shah Faisal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:35:36