0

ユーザーが調査を行い、調査がデータベースに保存されるaspxフォームがあります。データベースに保存した後、ユーザーが提供した調査回答が表示されるため、ユーザーは回答をpdfとして保存できます。

これはpdfとして保存する機能です

//Save as PDF
protected void SaveAsPDF_Click(object sender, EventArgs e)
{
    Random nRandom = new Random(DateTime.Now.Second);
    string strFileName = nRandom.Next().ToString() + ".pdf";
    string target = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["NewResponsePDF"].ToString() + strFileName);

    string filepath = target;
    string filename = Path.GetFileName(filepath);

    Response.Clear();
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=" + filename);

    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    this.Page.Form.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();
}

それはうまく機能し、すべてが順調です。フォームにはいくつかのテキストボックスがあります。ユーザーはテキストボックスにテキストを入力できます。時々、ユーザーは<、>、=のような数学記号を入力します。テキストボックスの値がデータベースに確実に保存されるようにするためValidateRequest="false"に、aspxファイルで次のことが行われました。ただし、SaveAsPDFはこれらのシンボルを解析できないため、エラーをスローします。

ほとんどの場合、これらの特別な記号が問題の原因であると確信しています。

htmlparser.Parse(sr)方法

テキストボックスに特別な記号がない場合、PDFは正常に生成されるためです。

私に何ができるか教えていただけませんか?

ありがとうございました。

4

1 に答える 1

4

テキストを処理して保存を実行する前に、まずHttpUtility.HtmlEncodeを使用して入力テキストをエンコードする必要があります。

http://msdn.microsoft.com/en-us/library/73z22y6h.aspx

于 2012-09-23T05:01:56.367 に答える