以只读 C# 格式导出为 PDF 的 .rdlc 格式报告
Posted
技术标签:
【中文标题】以只读 C# 格式导出为 PDF 的 .rdlc 格式报告【英文标题】:Report in .rdlc format exported to PDF as read only C# 【发布时间】:2017-08-06 06:36:25 【问题描述】:我在 .NET 中的一个应用程序中工作,我正在使用导出为 PDF 的报告(.rdlc 格式)。出于安全目的,我的客户需要只读 PDF。我已经尝试过使用 FileAttributes 和 FileInfo 库。
我最大的问题是,当我看到我的 PDF 属性时,只读复选框被勾选,但我尝试使用 Adobe Acrobat 编辑字段,我能够做到。
有什么想法吗?
【问题讨论】:
什么意思?您不会导出 rdlc 报告(或任何报告)。您渲染它并将结果输出到 PDF 文件中。文件的属性与 PDF 文件本身无关 - 只读属性意味着您无法修改文件,除非您将其删除,这很容易做到。使 PDF 本身受到保护是另一回事。我怀疑 VS 2010 有这个功能。 你说得对,我不是在导出它,而是在渲染它。在此之后,我将在我的文件系统中呈现的内容保存为 PDF。然后,如果我用 Adobe Acrobat 打开文件,有一个工具“TouchUp”允许用户编辑文件中的文本框。这就是我想要阻止的。您知道通过编码不让这种情况发生的任何方法吗?谢谢。 【参考方案1】:我认为您需要创建 PDF/A 文件。它是 PDF 的单独存档标准(不是“只读”属性)。因此,当您打开 PDF/A 文件时,您会收到有关它是存档文件的通知。最终用户可以编辑任何文件,但在这种情况下“存档”属性将丢失。 不幸的是,s-s-rS 无法制作 PDF/A 文件。
【讨论】:
你好梅尔。感谢你的回复。我已经解决了这个问题。会公布答案。【参考方案2】:可能,您应该寻找另一个报告生成器。像 Crystal 或 FastReport 之类的东西。我检查了 FR 并确保它可以创建 PDF/A。
【讨论】:
你好 xaml。我现在给出了这个问题的答案。随意看看。我在“普通”报表解决方案(.rdlc 格式)之前使用了 Crystal Reports,但我无法导出为页面大小低于 A4 的 PDF。这就是我使用 .rdlc 格式的原因。【参考方案3】:这可以通过导入 iTextSharp 库并使用以下代码来完成:
如果不首先在文件系统中将 PDF 渲染并保存为虚拟文件(即具有所有权限),我无法解决我的问题。正如您在代码中看到的,之后,我引用了同一个虚拟文件并使用 iTextSharp 库中的静态方法 Encrypt() 更改它的权限。然后,我将完成的受限 PDF 保存到文件系统并删除虚拟的。
【讨论】:
以上是关于以只读 C# 格式导出为 PDF 的 .rdlc 格式报告的主要内容,如果未能解决你的问题,请参考以下文章
我想把WinForm上的内容导出为PDF文档,用C# VS2010 需要引用哪些 dll ,导入哪些命名空间?具体怎么做呢?
使用 s-s-rS 和 ASP.NET 合并以 Pdf 格式生成的报告