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

Convert html with Persian characters to pdf using iTextSharp

我有一个包含波斯字符的 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>

但是输出是这样的

دیرگ

而不是

گرید

很久以前我就开始使用从右到左的文本呈现,但您应该能够设置 RunDirection 属性 以反映您需要的方向。

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

然后可以在您添加到 table 的单元格中添加文本,该单元格将继承方向,因此它应该正确呈现。