【问题标题】:Convert ASPX to PDF format将 ASPX 转换为 PDF 格式
【发布时间】:2013-07-16 20:09:53
【问题描述】:

我有几个 ASPX Web 表单,其中包含各种文本框、组合框、单选按钮列表和许多其他花哨的 Telerik 控件。填写表格后,需要将其转换为 PDF,然后打印。我尝试了 wkhtmltopdf,但输出中的文本框都是空的。我也尝试过 iTextSharp,但似乎无法摆脱 HTMLWorker.Parse() 中的 InvalidCastException。我尝试了 EO.PDF 的 Essential Objects 试用版,它运行良好,但购买要花很多钱,而且可能不值得。我似乎找到了很多只是基本的 html 到 pdf 转换器的示例,并且不适用于控件。似乎很多人使用 GridView 或类似的 iTextSharp,但我对 gridView 了解不多,或者它是否对我有帮助。

我需要一个想法来尝试或解决我的 iTextSharp 或 wkhtmltopdf 问题。任何帮助,将不胜感激。提前致谢!

【问题讨论】:

  • 为什么不用 iTextSharp 发布您的问题?这是一个可靠的框架,您应该能够找到可以帮助您的人。
  • 我应该联系 SourceForge 还是 iText?可能是 iText?
  • 不,您不必联系他们——您可以在 Stack Overflow 上获得帮助!
  • 对。我会问一个更具体的问题,但我会留下来,以防有人给我更好的想法。
  • "我试过 wkhtmltopdf 但输出中的文本框都是空的" 这可能是因为您没有将值保存在 wkhtmltopdf 可以使用的位置。如果您将提供给 wkhtmltopdf 的相同 url 放在随机计算机上,您的页面是否显示文本框值? (我的意思是不是首先生成页面的同一台 PC)。如果没有,那么问题出在您创建页面的方式上,而不是在 wkhtmltopdf 内部。

标签: asp.net pdf itextsharp


【解决方案1】:

这些字段显示为空白,因为填写的信息不是代码 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") 。此外,是否有某种方法可以将提交的值传递给第二个表单,而不会将它们临时存储在表或类似的东西中?感谢您的帮助!
  • 当然,您可以在不将其加载到浏览器的情况下生成 HTML 页面。提交表单后,从磁盘读取原始 HTML 文件并在脚本中处理它。
  • 关于如何“将提交的值传递给第二个表单而不临时存储它们”,您可以继续传递您需要的任何内容作为隐藏输入字段并填写它们的值。在后续页面中继续添加所需的隐藏字段;这样您就可以将页面以菊花链方式连接在一起。
  • 在这种情况下,您建议如何生成 HTML 页面?一般来说,我对 ASP.NET、HTML 和 Visual Studio 还是很陌生。
  • 我没有使用 ASP 的经验,但一般来说,您需要:(1) 从任何位置读取 HTML 文件,(2) 使用某种 HTML 解析器来填写表单值,(3) 保存填写好的 HTML 页面,以及 (4) 在此页面上运行 wkhtmltopdf 以生成 PDF。我相信最难的部分是步骤(2)。在 Ruby 世界中,我会为此使用 Nokogiri 库。对于asp.net html parser,Google 上出现的第一件事是HtmlAgilityPack。 ASP.net 中可能有本地工具来解析 HTML –你必须自己研究。
猜你喜欢
  • 2011-10-06
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2017-02-13
  • 2015-10-09
  • 2014-04-15
相关资源
最近更新 更多