【发布时间】:2012-07-12 12:41:54
【问题描述】:
如果我有一些报告,并且我想在用户通过 (Export to pdf file) 下载此报告之前执行特定操作(例如在此 pdf 中添加水印)。
如何处理导出按钮?
注意:我想要一些通用的方法,因为我有很多报告,我不想重复代码。我只想在下载之前对pdf 文件执行特定的行为。
【问题讨论】:
标签: c# asp.net handler reportviewer rdlc
如果我有一些报告,并且我想在用户通过 (Export to pdf file) 下载此报告之前执行特定操作(例如在此 pdf 中添加水印)。
如何处理导出按钮?
注意:我想要一些通用的方法,因为我有很多报告,我不想重复代码。我只想在下载之前对pdf 文件执行特定的行为。
【问题讨论】:
标签: c# asp.net handler reportviewer rdlc
假设您已经可以访问没有水印的原始 PDF:
实现类似的东西;
How can I insert an image with iTextSharp in an existing PDF?
重定向或二进制下载带水印的文件。
完成。
【讨论】:
最简单的方法是使用一个静态类,该类具有一个获取 pdf 文件和可能还有水印图像的方法,将其整理出来并传回。
如果你想要更通用的东西,例如你想说密码保护和/或为 pdf 加水印,或者你有非 pdf 报告你想做一些事情。
然后接口 IPrepareForExport 并在各种类型的“报告”上实现它,或者可能使用装饰器模式和一些属性。
【讨论】:
现在这不是一个容易实施的解决方案。但它是完全通用的。
你应该实现一个Custom Report Renderer。
通过为 Reporting Services 创建呈现器,您可以将报表呈现为您选择的格式。
只要您有报告导出,就可以使用它。
看看这个博客:PDF watermark/background Rendering Extension for SSRS
他已经为你想做的事情做了一个扩展。
然后您可以通过编辑 RSReportServer.Config 文件来remove the existing rendering option 您不希望支持。
您的报告数量无关紧要,因为这是一处配置更改。
【讨论】: