C# HTML不是';t使用iTextSharp渲染为PDF

C# HTML不是';t使用iTextSharp渲染为PDF,c#,html,pdf,itextsharp,C#,Html,Pdf,Itextsharp,我正在为我们的运输部门开发一个内部系统,我正在使用iTextSharp库 到目前为止,一切都已完成,但PDF生成并没有按预期工作。当用户按下“提交”按钮时,系统生成一个PDF文件 我用这个例子来激发灵感: Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf"); Response.Cache.SetCacheabi

我正在为我们的运输部门开发一个内部系统,我正在使用iTextSharp库

到目前为止,一切都已完成,但PDF生成并没有按预期工作。当用户按下“提交”按钮时,系统生成一个PDF文件

我用这个例子来激发灵感:

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);
this.Page.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(); 
生成PDF文件成功:IE要求我打开或下载文件,但当我按open时,我没有得到我所期望的

我有一个表单的片段被传递到上面的代码:

//var theForm = document.forms['frm_transport']; if (!theForm) { theForm = document.frm_transport; }
Laden/Lossen: tot uur.
Bezorgen op:
Staat klaar:
Transportnummer
Afleveradres
Bedrijf:
T.a.v.
Adres:
Postcode:
Plaats
Provincie:
Land:
Telefoon:
Transport kosten
Prioriteit: NormaalSpoed
Kosten: Selecteer...Ontvangervoor Organistatie
SPOED: Wanneer moet deze aangeleverd worden?
Datum:
Tijd:
Indien transportkosten voor organistatie kosten afboeken op:
Kostenplaats:

> Projectcode:
Indien voor rekening ontvanger:
Klantnummer
Opmerkingen
function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() !=
false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value =
eventArgument; theForm.submit(); } } //
我看到系统没有填充CSS和填充的表单。它只是“复制”原始html数据

由于未知的原因,它包含了原始Javascript代码

我尝试了什么

我看到另一个用户也问了同样的问题,但是我必须重新编写我的HTML代码


我错过了什么?对于C#.net和iTextSharp,我是一个初学者。

HTMLWorker
被弃用,取而代之的是XML Worker。有关XML工作者示例,请参见。(顺便说一句:我是iText的作者,我懂荷兰语。)我编辑了你的问题,注意到了一些错误:(1)我在你的代码片段中没有看到任何HTML,(2)你希望HTML解析器解释JavaScript(它没有),(3)你提到CSS,但我没有看到任何(而且解析CSS只在XML Worker中受支持),(4)你提到过(HTML?)如果您确实需要表单标记中的HTML,您可以使用XmlWorker自己解析标记之间的HTML并创建表单字段(而不是让iText/XmlWorker这样做)。但更简单、更直接的方法是将表单数据发送到服务器并在服务器上进行处理/将其转换为PDF。如果您仍然热衷于使用HTML制作PDF,请将数据插入您制作的类似表单的HTML中,并使用XmlWorker(YMMV)对其进行解析。