gpt4 book ai didi

c# - 使用 c# 和 asp.net 将 HTML 内容转换为 Pdf

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:41 26 4
gpt4 key购买 nike

我在这里尝试将html div标签内的内容转换为pdf,我发现了以下错误:

出现输入字符串格式不正确

这是我尝试使用 C# 编写的代码:

public string getWhileLoopData()
{
string htmlStr = "";
SqlConnection thisConnection = new SqlConnection("Data Source=VELU-PC\\SQLEXPRESS;Initial Catalog=EEP;Trusted_Connection=True;");
SqlCommand thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = "select * from Product_category";
thisConnection.Open();
SqlDataReader reader = thisCommand.ExecuteReader();
while (reader.Read())
{
string id = reader.GetString(6);
string Name = reader.GetString(3);
string Pass = reader.GetString(5);
htmlStr += "<tr><td><table width='200px'><tr><td align='center'><img src=" + id + " /></td></tr><tr><td align='center'>" + Name + "</td></tr></table></td><td><table width='600px'><tr><td align='left' style='border:1px solid blue;border-radius:7px;box-shadow: 10px 0 10px #888888; padding: 8px 6px 0 7px;'>Features: <br/><p style='margin-top: 10px;'>" + Pass + "</p></td></tr></table></td></tr>";
}
thisConnection.Close();
return htmlStr;
}
void generatetable()
{
divexcel.Visible = true;
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
divexcel.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 80f, 80f, -2f, 35f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
}
public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
{ }
protected void button_Click(object sender, EventArgs e)
{
generatetable();
}

这是我的 html 代码:

        <div id="divexcel" runat="server">
<table><tr><td><asp:Button ID="button" runat="server" Text="Submit"
onclick="button_Click" /></td></tr></table>
<table align="center" width="100%">
<tr>
<td>
<table>
<tr><td align="center">ID</td></tr>
<tr><td align="center">Name </td></tr>
</table>
</td>
<td>
<table>
<tr><td align='left'>Features: <br/><p>Pass</p></td></tr>
</table>
</td>
</tr>

<%=getWhileLoopData()%>

</table>


</div>

最佳答案

我建议不要使用 htmlworker,因为它是旧的并且不支持 css 样式,因此请尝试使用 htmlworker 的 xmlworker。引用下面的代码非常简单。
Refer from here

protected void lnkPDF_Clicked(object sender, EventArgs e)
{

Document Doc;
Doc = new Document(PageSize.A4, 10f, 10f, 50f, 20f);

string filename = "PaySlip";
string outXml = selectedhtml.Value;
outXml = "<style>#tdiv1{background:red;color:white;}</style>" + outXml;
outXml = outXml.Replace("px", "");
outXml = outXml.Replace("<br>", "<br/>");

MemoryStream memStream = new MemoryStream();
TextReader xmlString = new StringReader(outXml);
using (Document document = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(document, memStream);
document.Open();
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(outXml);
MemoryStream ms = new MemoryStream(byteArray);
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, ms, System.Text.Encoding.UTF8);
document.Close();
}

Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite(memStream.ToArray());
Response.End();
Response.Flush();
}

关于c# - 使用 c# 和 asp.net 将 HTML 内容转换为 Pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com