2
我使用自定義Urdu字體Jameel Noori Nastaleeq與iTextSharp,但它根本不顯示文本。它顯示的文字,當我使用內置的報表,如TIMES.TTF等iTextSharp不呈現自定義urdu字體
守則如下:
private void button1_Click(object sender, EventArgs e)
{
Document document = new Document();
try
{
PdfWriter writer = PdfWriter.GetInstance(document, new System.IO.FileStream("C:\\iTextSharpHelloworld.pdf", System.IO.FileMode.Create));
document.Open();
string fontpath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\Jameel Noori Nastaleeq.ttf";
//string fontpath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\times.ttf";
BaseFont basefont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
iTextSharp.text.Font arabicFont = new iTextSharp.text.Font(basefont, 24, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLUE);
var el = new Chunk();
iTextSharp.text.Font f2 = new iTextSharp.text.Font(basefont, el.Font.Size,
el.Font.Style, el.Font.Color);
el.Font = arabicFont;
PdfPTable table = new PdfPTable(1);
table.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
var str = "نام : ";
PdfPCell cell = new PdfPCell(new Phrase(10, str, el.Font));
table.AddCell(cell);
document.Add(table);
document.Close();
MessageBox.Show("Done");
}
catch (DocumentException de)
{
// this.Message = de.Message;
MessageBox.Show(de.Message);
}
catch (System.IO.IOException ioe)
{
// this.Message = ioe.Message;
MessageBox.Show(ioe.Message);
}
// step 5: we close the document
document.Close();
}
}
更新:設置cell.ArabicOptions = ColumnText.DIGITS_EN2AN;
不渲染字體,我需要的字體,但沒有任何其他文本。
首先,我必須道歉,因爲我對英語以外的任何語言都不太熟悉。當我嘗試使用您提供的字體時,我也看不到任何東西,但是當我嘗試其他字體(如Tahoma或Courier)時,我在PDF中看到了文字。當我分析原始PDF文件時,當我使用字體時,字符不會被包含在內。但是,當我改變運行方向時,我會看到你的字體。這讓我相信你的特定字體有問題。出於某種原因,iText無法處理RTL。不幸的是,我對字體瞭解不多,所以我無法幫助太多。 – 2013-03-25 14:13:03
該問題已在itext-questions郵件列表上得到解答:http://itext-general.2136553.n4.nabble.com/Issue-in-rendering-Custom-Urdu-Font-tt4657895.html#a4657907 – mkl 2013-03-26 01:37:48
@ChrisHaas感謝您的回答。 HTML Worker的東西可以幫助整理出來嗎? ABCPdf也看不到字體,但是當他們使用HTML代碼時,我能夠看到它。是否可以在我的HTML或CSS中提及* font-family *並且iTextSharp可以解析它? – Volatil3 2013-03-26 20:23:30