为什么在将非英语文本导出为pdf时会显示css标记?

时间:2017-04-24 20:33:11

标签: c# asp.net c#-4.0 webforms pdf-generation

我使用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();

0 个答案:

没有答案