Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从当前页面ASP.NET创建pdf_C#_Asp.net_Pdf_Render - Fatal编程技术网

C# 从当前页面ASP.NET创建pdf

C# 从当前页面ASP.NET创建pdf,c#,asp.net,pdf,render,C#,Asp.net,Pdf,Render,我想通过单击按钮从当前页面创建PDF。 现在,我的代码如下所示: protected void btnSave_Click(object sender, EventArgs e) { renderPDF = true; } protected override void Render(HtmlTextWriter writer) { if (renderPDF == true) { dtAnswer

我想通过单击按钮从当前页面创建PDF。 现在,我的代码如下所示:

protected void btnSave_Click(object sender, EventArgs e)
{           
     renderPDF = true;
}

protected override void Render(HtmlTextWriter writer)
    {
        if (renderPDF == true)
        {
            dtAnswer = taAnswer.GetData();
            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 = 3300;
            //string pageContent = strmRdr.ReadToEnd();
            //strmRdr.Dispose();
            //mem.Dispose();
            //writer.Write(pageContent);

            //CreatePDFDocument(pageContent);

            StringBuilder sb = new StringBuilder();
            sb.Append("<table border='1' width='100%' style='font-size:11px; font-weight:bold; border-collapse:collapse; font-family: Arial, 'Lucida Sans Unicode', sans-serif; '>");
            sb.Append("<tr>");
            sb.Append("<td style='background-color:red; text-align:center;' colspan ='3'>maxon motor</td>");
            sb.Append("</tr>");
            sb.Append("<tr>");
            sb.Append("<td width='18%'><p>maxon motor ag</p><p>Sachseln</p></td>");
            sb.Append("<td width ='64%' style='text-align:center'><p>Vorstellungsgespräch</p></td>");
            sb.Append("<td width='18%'><p>Seite</p></td>");
            sb.Append("</tr>");
            sb.Append("</table>");

            sb.Append("<br /><br />");
            sb.Append("<Table style=\"width:100%;font-weight:bold;border-collapse:collapse; font-family: Arial, 'Lucida Sans Unicode', sans-serif;\">");
            sb.Append("<tr>");
            sb.Append("<td><p>Name / Vorname:</p></td>");
            sb.Append("<td></td>");
            sb.Append("</tr>");
            sb.Append("<tr>");
            sb.Append("<td><p>Geb. Datum:</p></td>");
            sb.Append("<td></td>");
            sb.Append("</tr>");
            sb.Append("<tr>");
            sb.Append("<td><p>Offene Stelle zugewiesen:</p></td>");
            sb.Append("<td></td>");
            sb.Append("</tr>");
            sb.Append("<tr>");
            sb.Append("<td><p>Gesprächsteilnehmer:</p></td>");
            sb.Append("<td></td>");
            sb.Append("</tr>");
            sb.Append("</table>");
            sb.Append("<br /><br />");

            sb.Append("<div>");
            for (int i = 0; i < pQuestions.Controls.Count; i++)
            {
                string sName = "lbl" + pQuestions.Controls[i].ID.Substring(3, pQuestions.Controls[i].ID.Length - 3);
                if (pQuestions.Controls[i].ID == sName)
                {
                    if (!pQuestions.Controls[i].ID.Contains(","))
                    {
                        string sBlockName = pQuestions.Controls[i].ID.Substring(3, pQuestions.Controls[i].ID.Length - 3);
                        sb.Append("<p><b>" + sBlockName + "</b></p>");
                        sb.Append("<br />");
                        for (int t = 0; t < pQuestions.Controls.Count; t++)
                        {
                            if (pQuestions.Controls[t].ID.Contains(sBlockName))
                            {
                                if (pQuestions.Controls[t].ID.Contains("lbl") && pQuestions.Controls[t].ID != pQuestions.Controls[i].ID)
                                {
                                    sb.Append("<p>" + ((Label)(pQuestions.Controls[t])).Text + "</p>");
                                    sb.Append("<br />");
                                }
                                else if (pQuestions.Controls[t].ID.Contains("txt"))
                                {
                                    if (((TextBox)(pQuestions.Controls[t])).Text != "")
                                    {
                                        sb.Append("<p>" + ((TextBox)(pQuestions.Controls[t])).Text + "</p>");
                                        sb.Append("<br />");
                                    }
                                    else
                                    {
                                        sb.Append("<br /><br /><br /><br />");
                                    }
                                }
                            }
                        }
                    }
                }
            }
            sb.Append("</div>");

            StringReader sr = new StringReader(sb.ToString());
            string rr= sb.ToString();
            CreatePDFDocument(rr);
        }
        else
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            HtmlTextWriter tw = new HtmlTextWriter(new StringWriter(sb));
            base.Render(tw);
            // get the captured markup as a string
            string pageSource = tw.ToString();
            //Get the rendered content
            string sContent = sb.ToString();
            //Now output it to the page, if you want
            writer.Write(sContent);
        }
    }

public void CreatePDFDocument(string strHtml)
        {
            string strHTMLpath = "c:\\MyHTML.html";
            StreamWriter strWriter = new StreamWriter(strHTMLpath, false, System.Text.Encoding.UTF8);
            strWriter.Write(strHtml);
            strWriter.Close();
            string strFileName = "C:\\map1.pdf";
            // step 1: creation of a document-object
            Document document = new Document();
            // step 2:
            // we create a writer that listens to the document
            PdfWriter.GetInstance(document, new FileStream(strFileName, FileMode.Create));
            StringReader se = new StringReader(strHtml);
            TextReader tr = new StreamReader("C:\\MyHTML.html");

            //add the collection to the document
            document.Open();
            HTMLWorker worker = new HTMLWorker(document);

            worker.StartDocument();

            //// step 5: parse the html into the document
            worker.Parse(tr);

            //// step 6: close the document and the worker
            worker.EndDocument();

            //worker.Parse(tr); // getting error "Illegal characters in path"
            document.Close();
            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();
            }  
protectedvoidbtnsave\u单击(对象发送方,事件参数e)
{           
renderPDF=true;
}
受保护的覆盖无效渲染(HtmlTextWriter编写器)
{
如果(renderPDF==true)
{
dtAnswer=taAnswer.GetData();
MemoryStream mem=新的MemoryStream();
StreamWriter twr=新StreamWriter(mem);
HtmlTextWriter myWriter=新的HtmlTextWriter(twr);
base.Render(myWriter);
myWriter.Flush();
myWriter.Dispose();
StreamReader strmRdr=新的StreamReader(mem);
//strmRdr.BaseStream.Position=3300;
//字符串pageContent=strmRdr.ReadToEnd();
//strmRdr.Dispose();
//mem.Dispose();
//writer.Write(页面内容);
//创建PDF文档(页面内容);
StringBuilder sb=新的StringBuilder();
某人加上(“”);
某人加上(“”);
sb.附加(“maxon马达”);
某人加上(“”);
某人加上(“”);
sb.追加(“maxon motor ag

Sachseln

”); sb.追加(“vorstellungspräch

”; sb.追加(“Seite

”); 某人加上(“”); 某人加上(“”); 某人追加(“

”); 某人加上(“”); 某人加上(“”); sb.追加(“名称/Vorname:

”); 某人加上(“”); 某人加上(“”); 某人加上(“”); sb.追加(“Geb.数据:

”); 某人加上(“”); 某人加上(“”); 某人加上(“”); sb.追加(“Offeine Stelle zugewiesen:

”); 某人加上(“”); 某人加上(“”); 某人加上(“”); sb.追加(“Gesprächsteinehmer:

”; 某人加上(“”); 某人加上(“”); 某人加上(“”); 某人追加(“

”); 某人加上(“”); 对于(int i=0;i”); sb.追加(“
”); 对于(int t=0;t”; sb.追加(“
”); } else if(pQuestions.Controls[t].ID.Contains(“txt”)) { 如果(((文本框)(pQuestions.Controls[t]).Text!=“”) { sb.追加(“”+((文本框)(pQuestions.Controls[t])).Text+”

”; sb.追加(“
”); } 其他的 { 某人追加(“




”); } } } } } } } 某人加上(“”); StringReader sr=新的StringReader(sb.ToString()); 字符串rr=sb.ToString(); 创建PDF文档(rr); } 其他的 { System.Text.StringBuilder sb=新的System.Text.StringBuilder(); HtmlTextWriter tw=新的HtmlTextWriter(新的StringWriter(sb)); 基本渲染(tw); //将捕获的标记作为字符串获取 字符串pageSource=tw.ToString(); //获取渲染的内容 字符串sContent=sb.ToString(); //如果需要,现在将其输出到页面 作者:写(内容); } } public void CreatePDFDocument(字符串strHtml) { string strHTMLpath=“c:\\MyHTML.html”; StreamWriter strWriter=newstreamwriter(strHTMLpath,false,System.Text.Encoding.UTF8); strWriter.Write(strHtml); strWriter.Close(); string strFileName=“C:\\map1.pdf”; //步骤1:创建文档对象 文档=新文档(); //步骤2: //我们创建一个侦听文档的编写器 GetInstance(文档,新文件流(strFileName,FileMode.Create)); StringReader se=新的StringReader(strHtml); TextReader tr=新的StreamReader(“C:\\MyHTML.html”); //将集合添加到文档中 document.Open(); HTMLWorker=新的HTMLWorker(文档); worker.StartDocument(); ////步骤5:将html解析到文档中 worker.Parse(tr); ////步骤6:关闭文档和工作人员 worker.EndDocument(); //worker.Parse(tr);//获取错误“路径中的非法字符” document.Close(); ShowPdf(strFileName); } public void ShowPdf(字符串strFileName) { Response.ClearCont
            string = "Pdf Contents in html format";
            StringReader sr = new StringReader(sb.ToString());

            Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
                pdfDoc.Open();
                htmlparser.Parse(sr);
                pdfDoc.Close();
                byte[] bytes = memoryStream.ToArray();
                memoryStream.Close();
           }