【问题标题】:Simple Template Based PDF Reports in .Net.Net 中基于简单模板的 PDF 报告
【发布时间】:2017-04-05 08:29:46
【问题描述】:

我的客户给了我一些 Word 和 Powerpoint 文档,其中指定了我们的产品生成的某些“报告”应该是什么样子。

这意味着,我需要修改这些文档(替换占位符等),然后我需要将它们导出为 PDF。

你会如何在 C# 中解决这个问题?

TL;DR:编辑 office 文档完全没有问题,但据称将该文档导出为 PDF(使用 Interop)在将其作为 Web 服务器应用程序运行时会导致问题。这就是这里的全部问题。

【问题讨论】:

    标签: c# .net templates pdf reporting


    【解决方案1】:

    我同意 Interop 不适合在服务器环境中进行文档操作。我会通过准备带有数据占位符的 MS Word 模板文档来解决这个问题。然后我会使用 c# 加载报告的数据并将数据与模板合并以获得最终文档(docx、pdf、xps 或各种图像格式)。有 3rd 方工具包使其变得非常容易。这是toolkit needed 使用的代码,用于将 xml 数据与模板合并以获取 pdf 文档:

    XElement customers = XElement.Load("Customers.xml");
    DocumentGenerator dg = new DocumentGenerator(customers);
    DocumentGenerationResult result = dg.GenerateDocument("MyTemplate.docx", "MyReport.pdf");
    

    您当然也可以使用基于 OpenXML 的免费库和 SDK,但您应该期待陡峭的学习曲线、大量的调试和大量的时间投入。

    【讨论】:

      【解决方案2】:

      Wkthmltopdf 可能是一个选项。

      【讨论】:

        【解决方案3】:

        一种完全不同的“报告方法”可能是将这些带有占位符的办公文档保存为 mht(即MHTML a web archive format)。这可以直接在 MS Office 甚至programatically 中完成。

        可以通过字符串搜索和替换轻松交换占位符。 mht 文件可以直接用于显示报告而不是 PDF。 mht 格式的一个明显缺点是 HTML 格式。使用 PDF,您可以获得清晰且固定的定位。

        我们正在使用这种报告创建方式。有一些缺陷,但它可以工作,客户可以通过右键单击 Open-With 首选的 MS Office 风格直接编辑 mht 模板。

        【讨论】:

          【解决方案4】:

          您可以使用报告生成器,例如 FastReport.Net 来解决您的问题。它可以为占位符分配不同的数据,还可以导出为 PDF。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多