使用 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 的单元格中添加文本,该单元格将继承方向,因此它应该正确呈现。
我有一个包含波斯字符的 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 的单元格中添加文本,该单元格将继承方向,因此它应该正确呈现。