使用iTextSharp将带有波斯语字符的html转换为pdf

时间:2015-02-28 10:58:10

标签: c# itextsharp persian

我有一个包含波斯字符的Html文件。我想使用iTextSharp将其转换为pdf。

我写过这些文字来做:

string HTML = System.IO.File.ReadAllText(Server.MapPath("~/Misc/Html.txt"));
Document document = new Document();
string fontpath = Server.MapPath("~/Fonts/BNazanin.ttf");
iTextSharp.text.FontFactory.Register(fontpath);
PdfWriter.GetInstance(document, new FileStream(Server.MapPath("~/Files/Pdf/test.pdf"), FileMode.Create));
document.Open();
try
{
    iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
    styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FACE, "BNazanin");
    styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H);
    List<IElement> list = HTMLWorker.ParseToList(new StringReader(HTML), styles);
    for (int k = 0; k < list.Count; k++)
    {
        document.Add((IElement)list[k]);
    }
    document.Close();
}
catch
{
    document.Close();
}

Html.txt是这样的:

<span>گرید</span>

但输出是这样的

دیرگ

而不是

گرید

1 个答案:

答案 0 :(得分:3)

自从我使用从右到左呈现文本以来,很长一段时间,但您应该能够设置RunDirection属性以反映您需要的方向。

PdfPTable pdfTable = new PdfPTable(1);
pdfTable.RunDirection = PdfWriter.RUN_DIRECTION_RTL;

然后可以在添加到表格的单元格中添加文本,单元格将继承方向,以便正确呈现。