将ASPX转换为PDF格式

3
我有几个包含各种文本框、组合框、单选按钮列表和许多其他精美的telerik控件的ASPX网页表格。填写完表格后需要将其转换为PDF并进行打印。我尝试过wkhtmltopdf,但输出中的文本框都是空的。我还尝试了iTextSharp,但无法摆脱HTMLWorker.Parse()的InvalidCastException。我尝试过Essential Objects的EO.PDF试用版,它完美地工作,但购买它需要花费大量资金,可能不值得。我似乎只能找到一些基本的html到pdf转换器示例,无法与控件配合使用。看起来很多人使用GridView或类似的iTextSharp,但我对GridView了解不多,也不知道它是否能帮助我。

我需要尝试的想法或可能解决我的iTextSharp或wkhtmltopdf问题的解决方案。任何帮助都将不胜感激。谢谢!


1
为什么不使用iTextSharp来发布您的问题呢?那是一个可靠的框架,您应该能够找到人来帮助您解决问题。 - Garrison Neely
我应该联系SourceForge还是iText?可能是iText吧? - user2588873
不用,你不必联系他们——你可以在Stack Overflow这里得到帮助! - Garrison Neely
我尝试了wkhtmltopdf,但输出中的文本框都是空的。这可能是因为您没有将值保存在wkhtmltopdf可以使用的位置。如果您将相同的URL放在随机计算机上并在页面上生成,页面是否显示文本框值?如果不是,则问题在于您创建页面的方式,而不是wkhtmltopdf内部的问题。 - yms
请查看我在你的另一个问题上的答案。 - Arman H
显示剩余2条评论
1个回答

0

字段显示为空白是因为填写的信息不是代码的HTML结构的一部分。浏览器可以显示它,但wkhtmltopdf看不到。

简单的解决方法:

  1. 在表单提交时,将提交的值保存在某个地方。

  2. 使用与表单页面相同的代码生成新的HTML页面。

  3. 使用第1步中保存的值填充表单的HTML。例如,在表单上指定已提交数据的value属性:

    <input type="text" name="customer_name" value="John Doe">
    

wkhtmltopdf现在可以渲染带有在HTML中硬编码的值的表单。


这个解决方案在我的脑海中浮现了几次,但是我能否在不在浏览器中加载第二个“重复”页面的情况下生成它呢?由于我有大约16个aspx页面,所以在提交时我使用Redirect.Response("nextpage.aspx")。此外,是否有一些方法可以将提交的值传递给第二个表单,而无需将它们暂时存储在表格或类似物中?感谢您的帮助! - user2588873
当然,你可以在不加载到浏览器的情况下生成HTML页面。在表单提交后,从磁盘读取原始HTML文件并在脚本内部处理它。 - Arman H
关于如何“在不暂时存储它们的情况下将提交的值传递给第二个表单”,您可以将所需的任何内容作为填充了值的隐藏输入字段继续传递。在后续页面上添加所需的隐藏字段;这样,您就可以将页面链接在一起。 - Arman H
在这种情况下,您会如何推荐生成HTML页面?我对ASP.NET、HTML和Visual Studio都比较陌生。 - user2588873
我对ASP没有经验,但一般来说你需要:(1)从任何地方读取HTML文件,(2)使用某种HTML解析器填写表单值,(3)保存填写好的HTML页面,以及(4)在此页面上运行wkhtmltopdf以生成PDF。我认为最难的部分是第二步。在Ruby世界中,我会使用Nokogiri库。在Google上搜索“asp.net html parser”的第一件事是HtmlAgilityPack。可能有本地工具在ASP.net中解析HTML - 你必须自己研究。 - Arman H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接