我使用itextsharp将我的URDU语言文本加载到pdf文件,它可以工作,但它也可以传输css标签。我正在从数据库nvarchar列加载编码文本并解码它,但它仍显示css标记。为什么?
从db加载到html变量的字符串。
<p>
1. <span dir="RTL">میں اس ادارے کی پالیسیوں کی خلاف ورزی نہیں کرے گا</span>.</p>
<p>
2. <span dir="RTL">میرے فرائض نشان تک ہو گا</span>.</p>
<p>
3. <span dir="RTL">کوئی خلاف ورزی ادنڈت جانا چاہیئے</span></p>
<p>
4. <span dir="RTL">میں نے اپنے ملک کے لئے اپنی جان دیتا ہوں گے</span>.</p>
<p>
5. <span dir="RTL">میں ایک غیر معمولی انداز میں رد عمل کا اظہار تو میری زبان معاف کرنا</span>.</p>
<p>
6. <span dir="RTL">میں ایسا میرا سب کچھ میرا ادارے اور ملک کی خاطر ہے</span>.</p>
<p>
7. <span dir="RTL">پاکستان ایک خود مختار ملک ہے اور رہے گی</span>.</p>
<p>
8. <span dir="RTL">میں مکمل اپنے فرائض کو بھر دوں گا</span></p>
<p>
9. <span dir="RTL">میں پکڑے گئے تو؛ میں نے آپ کو نہیں پتہ</span>.</p>
<p>
10. <span dir="RTL">تمام ہے</span>.</p>
代码:
Document document = new Document();
try
{
MemoryStream msOutput = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, msOutput);
document.Open();
string fontpath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\arial.ttf";
BaseFont basefont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, true);
iTextSharp.text.Font arabicFont = new iTextSharp.text.Font(basefont, 24, iTextSharp.text.Font.NORMAL, iTextSharp.text.Color.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 = f2;
PdfPTable table = new PdfPTable(1);
table.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
var str = Server.HtmlDecode(html); //html is a string loaded from db
str = str.Replace("<span dir=", "").Replace("RTL", "").Replace('"', ' ').Replace("</span>", "").Replace("</p>", "").Replace("<p>", "").Replace('>', ' ');
PdfPCell cell = new PdfPCell(new Phrase(10, str, el.Font));
cell.Border = 0;
table.AddCell(cell);
document.Add(table);
document.Close();
MemoryStream memStream = msOutput; // returns a memory stream object
byte[] bytesInStream = memStream.ToArray();
Response.Clear();
string FileName = "TermsAndConditionsUrdu.pdf";
FileName = FileName.Replace(",", "");
Response.ContentType = "application/pdf";
Response.Headers.Remove("content-disposition");
Response.AddHeader("content-disposition", "attachment; filename=\"" + FileName + "\"");
Response.BinaryWrite(bytesInStream);
Response.End();
Response.Flush();
}
catch (DocumentException de)
{
// this.Message = de.Message;
}
catch (IOException ioe)
{
// this.Message = ioe.Message;
}
// step 5: we close the document
document.Close();