【问题标题】:Dynamic PDF generation from template [closed]从模板生成动态 PDF [关闭]
【发布时间】:2011-01-09 11:03:02
【问题描述】:

我需要能够在我们的 (ASP.net) 应用程序中生成 PDF。我们需要满足以下要求:

  1. 文本大部分是动态的,必须以编程方式添加。

  2. 理想情况下,我们希望这些生成的文档基于我们的设计师提供的 PDF 模板。

  3. 根据特定条件,某些部分/页面可能可见也可能不可见 - 理想情况下,我们希望内容向上“流动”以在删除某些内容时填充空间。

    李>
  4. 根据特定条件,某些页面可能需要重复。

  5. 某些 PDF 模板将超出我们的控制范围(我们正在填充第三方提供的申请表),因此能够读取空白 PDF 并填充它会很好。

我查看了 iTextSharp,它似乎可以完成大部分这些事情(即我可以获取 PDF,对其进行编辑以包含我们需要填写数据的表单字段,然后使用 iTextSharp 将其作为模板读取,然后填充数据),但是,我不确定如何隐藏整个部分和/或重复页面。

我在这里寻找的是任何处于类似情况的人的小建议。


这里的小更新,我们选择了 iTextSharp - 它是一个强大的工具,但确实需要一些学习,但是它快速、轻便,并且完全符合我们的要求。

不过……

我要指出的是,最新版本不再是真正免费的(就像啤酒一样)——许可证不允许商业用途。因此,我们现在有了一个许可版本,但它并不便宜(而且他们没有发布价格表)。

【问题讨论】:

标签: c# asp.net reporting pdf-generation


【解决方案1】:

我们已将http://www.dynamicpdf.com/ 用于此类项目,并且对结果感到满意。他们有一个 PDF WYSIWYG 设计器工具,您可以使用它来构建 PDF 的布局模板,以及基于字段到列映射将模板与数据合并的工具。这样可以节省数小时的手动编码给定 PDF 的每个元素的时间。它支持页眉和页脚并处理复杂的分页符。

【讨论】:

  • 这不是免费软件
【解决方案2】:

为什么需要pdf格式的模板文件?对于您想要的动态,它是报告模板的错误格式。使用也输出为 pdf 的报告软件。您的设计师可以使用 GUI 轻松创建模板。您会在 * 上找到许多报告解决方案。

【讨论】:

    【解决方案3】:

    我会使用 iTextSharp。我根据不同的模板创建各种 PDF 文件,iText 对我来说效果最好。它是一个非常强大的控件,几乎可以以任何方式操作 pdf 文件。

    我不确定 iText 能否满足您的第三个要求。我知道它可以从 html 文件创建 pdf。也许使用 Tomas 发布的内容并使用 iText 创建 pdf。

    【讨论】:

    • iTextSharp 不应用 CSS...我想制作一个带边框的表格,但它不起作用....还有背景颜色,不起作用...
    【解决方案4】:

    我会考虑使用从模板创建 HTML 文件并使用Prince 将它们转换为 PDF。 Prince 非常灵活,从模板创建 HTML 文件比直接创建 PDF 文件要容易得多。

    【讨论】:

    • 我们目前正在做这样的事情(使用activePDF),它有点慢。
    • We offer a free license for non-commercial use of Prince. This license adds a small logo to the first page of generated PDF files.
    【解决方案5】:

    有各种商业组件可以做到这一点。查看:PDFLib (http://www.pdflib.com/)、Tall Components (http://www.tallcomponents.com/) 等

    我用过 Tall components 的产品,可以推荐。

    还有一些贵很多。

    您提到的 ITextSharp 非常好,可用于添加/删除外部页面,在这种情况下,您可以通过省略它们来隐藏整个页面,或者用占位符页面替换它们。 iText 可以使用现有的 PDF 文件或创建空白页。

    根据我的个人经验,我刚刚在现有页面上添加了图像和文本,并在需要表格数据时添加了由报告工具生成的页面。

    HTH

    【讨论】:

    • 嗯。但是如果要隐藏的内容是页面中的一个部分,这会变得有点困难。
    • 您可以添加一个不包含该部分的页面,然后以编程方式调整另一个页面(或两者),然后在需要时替换它?