以只读 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 属性时,只读复选框被勾选,但我尝试使用 Adob​​e Acrobat 编辑字段,我能够做到。

有什么想法吗?

【问题讨论】:

什么意思?您不会导出 rdlc 报告(或任何报告)。您渲染它并将结果输出到 PDF 文件中。文件的属性与 PDF 文件本身无关 - 只读属性意味着您无法修改文件,除非您将其删除,这很容易做到。使 PDF 本身受到保护是另一回事。我怀疑 VS 2010 有这个功能。 你说得对,我不是在导出它,而是在渲染它。在此之后,我将在我的文件系统中呈现的内容保存为 PDF。然后,如果我用 Adob​​e 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 格式生成的报告

如何在解决方案中嵌入字体以用于带有 RDLC 的 PDF

如何以格式化 ID 值作为报告名称将 MS Access 报告导出为 PDF?

可以在前端将数据导出为pdf格式吗? [关闭]

java怎样将网页上面的数据以pdf的格式导出,求代码