所以我有一個基本的 ASPX 頁面,我可以將其推送到 PDF 中。基于覆寫 Render() 方法,以便它使用 iText7 包創建 PDF。作業正常。這樣的行為使得正在呈現的初始頁面僅顯示 PDF。我將在下面包含示例代碼。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Html2pdf;
namespace Dch_Take_In_Form
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void Render(HtmlTextWriter writer)
{
MemoryStream mem = new MemoryStream();
StreamWriter twr = new StreamWriter(mem);
HtmlTextWriter myWriter = new HtmlTextWriter(twr);
base.Render(myWriter);
myWriter.Flush();
myWriter.Dispose();
StreamReader strmRdr = new StreamReader(mem);
strmRdr.BaseStream.Position = 0;
string pageContent = strmRdr.ReadToEnd();
strmRdr.Dispose();
mem.Dispose();
writer.Write(pageContent);
CreatePDFDocument(pageContent);
}
public void CreatePDFDocument(string strHtml)
{
string strFileName = HttpContext.Current.Server.MapPath("test.pdf");
HtmlConverter.ConvertToPdf(strHtml, File.Create(strFileName));
ShowPdf(strFileName);
}
public void ShowPdf(string strFileName)
{
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "inline;filename=" strFileName);
Response.ContentType = "application/pdf";
Response.WriteFile(strFileName);
Response.Flush();
Response.Clear();
}
}
}
我的目標是擁有一個 Web 表單,其中包含最終用戶填充的各種文本框、復選框等。因此,當最終用戶完成后,他們可以單擊按鈕控制元件,然后根據該輸入生成 PDF。PDF 將在服務器端靜默保存,對最終用戶透明。關于如何最有效地完成將當前 Web 表單讀入 HTML 字串的任何建議或代碼片段?
促進 PDF 創建的 iText7 方法采用(除其他外)表示 HTML 頁面代碼的字串。這就是我需要通過反映當前 Web 表單包含的內容來提供的內容。
uj5u.com熱心網友回復:
這是我為實作這一目標所做的。
向 ASPX 頁面標題添加了 EnableEventValidation="false" 。
將VerifyRenderingInServerForm的空方法覆寫添加到代碼隱藏中。
添加了以下用于抓取當前頁面以提取 HTML 代碼的方法。
公共字串 ScrapePage() { var sw = new StringWriter(); var hw = new HtmlTextWriter(sw); this.Page.RenderControl(hw); var strHtml = sw.ToString(); 回傳strHtml;}
所以現在我可以將 HTML 代碼推送到 iText PDF 撰寫器方法中,并且一切都按預期作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/496140.html
