ユーザーが調査を行い、調査がデータベースに保存される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は正常に生成されるためです。
私に何ができるか教えていただけませんか?
ありがとうございました。