Doddle报告iTextSharp土耳其人字符

时间:2013-08-21 17:27:32

标签: c# asp.net itextsharp

我正在使用codeplex doddlereport项目来报告我的linq查询。这很简单也很成功。但对我来说只有一个问题。当我报告excel,html或csv文件土耳其字符似乎没问题。但是,当我尝试将我的查询导出到pdf与doddlereport.itextsharp土耳其字符隐藏。隐藏的字符是(“İ,ı,Ş,ş,Ğ,ğ,Ö,ö,ç,Ç,ü,Ü”)。任何人使用doddlereport并导出到pdf与土耳其字符帮助我如何成功?

或者我如何更改pdf文件的doddlereport字体系列?可以为我解决。

1 个答案:

答案 0 :(得分:0)

您需要更改https://doddlereport.codeplex.com/SourceControl/latest#src/DoddleReport.iTextSharp/PdfReportWriter.cs文件的ConvertStyleToFont方法以支持Identity_H编码(Unicode编码)。 More info here

using DoddleReport;
using iTextSharp.text;
using iTextSharp.text.pdf;
using Font = iTextSharp.text.Font;

namespace Test
{
    public class PdfReportWriter // …
    {
        public static Font ConvertStyleToFont(ReportStyle reportStyle, string fontFamily)
        {
            var style = Font.NORMAL;
            if (reportStyle.Underline)
            {
                style = Font.UNDERLINE;
            }
            else if (reportStyle.Bold || reportStyle.Italic)
            {
                if (reportStyle.Bold && reportStyle.Italic)
                {
                    style = Font.BOLDITALIC;
                }
                else if (reportStyle.Bold)
                {
                    style = Font.BOLD;
                }
                else
                {
                    style = Font.ITALIC;
                }
            }

            // todo: to use this method you need to register your fonts at the beginning of the report
            // FontFactory.Register(@"c:\windows\fonts\myfont.ttf");

            return FontFactory.GetFont(
                fontFamily, BaseFont.IDENTITY_H, BaseFont.EMBEDDED,
                reportStyle.FontSize, style,
                new BaseColor(reportStyle.ForeColor.R, reportStyle.ForeColor.G, reportStyle.ForeColor.B));
        }
    }
}

或者您可以尝试http://pdfreport.codeplex.com