.rdlc 格式的报告导出为 PDF 为只读 C#
Report in .rdlc format exported to PDF as read only C#
我在 .NET 中的一个应用程序中工作,我在其中使用导出为 PDF 的报告(.rdlc 格式)。出于安全目的,我的客户需要阅读 PDF。我已经尝试使用 FileAttributes 和 FileInfo 库。
我最大的问题是,当我看到我的 PDF 属性时,只读复选框被勾选,但我尝试使用 Adobe Acrobat 编辑字段并且我能够做到。
有什么想法吗?
我认为您需要创建 PDF/A 个文件。它是 PDF 的单独存档标准(不是 "readonly" 属性)。因此,当您打开 PDF/A 个文件时,您会收到它是存档文件的通知。最终用户可以编辑任何文件,但在这种情况下 "archive" 属性 将会丢失。
不幸的是,SSRS 无法生成 PDF/A 个文件。
也许,您应该寻找另一个报告生成器。类似于 Crystal 或 FastReport。我检查了 FR 并确保它可以创建 PDF/A.
这可以通过导入 iTextSharp 库并使用以下代码来完成:
如果不首先在文件系统中将 PDF 渲染并保存为虚拟文件(即具有所有权限),我将无法解决我的问题。正如您在代码中看到的,之后,我引用同一个虚拟文件并使用 iTextSharp 库中的静态方法 Encrypt() 更改它的权限。然后,我将完成的和受限制的 PDF 保存到文件系统并删除虚拟文件。
我在 .NET 中的一个应用程序中工作,我在其中使用导出为 PDF 的报告(.rdlc 格式)。出于安全目的,我的客户需要阅读 PDF。我已经尝试使用 FileAttributes 和 FileInfo 库。
我最大的问题是,当我看到我的 PDF 属性时,只读复选框被勾选,但我尝试使用 Adobe Acrobat 编辑字段并且我能够做到。
有什么想法吗?
我认为您需要创建 PDF/A 个文件。它是 PDF 的单独存档标准(不是 "readonly" 属性)。因此,当您打开 PDF/A 个文件时,您会收到它是存档文件的通知。最终用户可以编辑任何文件,但在这种情况下 "archive" 属性 将会丢失。 不幸的是,SSRS 无法生成 PDF/A 个文件。
也许,您应该寻找另一个报告生成器。类似于 Crystal 或 FastReport。我检查了 FR 并确保它可以创建 PDF/A.
这可以通过导入 iTextSharp 库并使用以下代码来完成:
如果不首先在文件系统中将 PDF 渲染并保存为虚拟文件(即具有所有权限),我将无法解决我的问题。正如您在代码中看到的,之后,我引用同一个虚拟文件并使用 iTextSharp 库中的静态方法 Encrypt() 更改它的权限。然后,我将完成的和受限制的 PDF 保存到文件系统并删除虚拟文件。