如何使用 C# 设置密码和权限保护 PDF 文件 | IronPDF 教程

如何在 C# 中设置 PDF 密码和权限

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF 可让您在 C# 中使用密码和权限保护 PDF 文档,既支持用于打开文件的用户密码,也支持通过 128 位加密控制编辑、打印和复制权限的所有者密码。 这一全面的安全功能允许开发人员实施符合企业合规性要求的文档保护策略。

密码保护涉及加密文档以限制未经授权的访问。 它通常包括两种类型的密码:用户密码(或打开密码),用于打开文档,以及所有者密码(或权限密码),用于控制编辑、打印和其他操作的权限。 在您的 .NET 应用程序中实施 PDF 安全性时,了解这些不同的密码类型至关重要。

IronPDF 支持您对现有和新 PDF 文件的密码和权限所需的一切功能。 可以应用细粒度的元数据和安全设置,包括将 PDF 文档限制为不可打印、只读和加密。 支持128位加密、解密和密码保护。 这些功能与 IronPDF 的其他功能(如 数字签名PDF 压缩)无缝集成。

快速入门:使用IronPDF设置 PDF 密码和权限

快速入门使用IronPDF保护您的文档。 本示例展示了如何设置用户和所有者密码,同时配置权限以防止未经授权的打印。 通过遵循这些简单步骤,您可以使用C# .NET有效地保护您的PDF文件,确保您的敏感数据保持机密。 IronPDF 使您可以直接在应用程序中实施强大的安全措施,无论您是在处理 HTML 到 PDF 的转换还是现有文档。

PdfDocument.FromFile


如何为 PDF 设置密码?

用户密码和所有者密码有什么区别?

User Password(也称为打开密码)是打开和查看PDF文档所需的。 如果没有这个密码,PDF 文件根本无法访问。 相比之下,Owner Password(或权限密码)授予对文档安全设置的完全控制。 当您使用所有者密码打开 PDF 时,您可以修改权限、删除密码并不受限制地访问所有文档功能。 这种双密码系统可为不同的使用情况提供灵活的安全选项,从简单的文档保护到复杂的权限管理方案。

为什么要同时使用两种密码类型?

使用这两种密码类型可以创建一个全面的安全策略。 用户密码确保只有经过授权的人才能查看文档,而所有者密码则提供管理控制。 这在商业环境中尤其有用,因为在这种环境中,您可能希望员工查看文档(使用用户密码),但只有管理人员可以修改权限或删除保护(使用所有者密码)。 此外,这种方法还符合许多行业的合规要求,这些行业规定敏感文件有不同的访问级别。

当用户输入每个密码时会发生什么?

当用户输入user password时,他们可以根据您设置的权限访问文档。 他们可以查看内容,但可能被限制打印、复制文本或进行修改。 当输入owner password时,所有限制将被解除,用户对文档具有完全的管理权限,包括更改密码和修改权限设置的能力。

我们有一个要使用IronPDF保护的示例PDF文件。 让我们执行以下代码为PDF添加密码。 在此示例中,我们将使用密码password123。 无论您是从 HTML 创建 PDF 还是处理现有文档,这种方法都能实现无缝对接。

:path=/static-assets/pdf/content-code-examples/how-to/pdf-permissions-passwords-add-password.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Secret Information:</h1> Hello World");

// Password to edit the pdf
pdf.SecuritySettings.OwnerPassword = "123password";

// Password to open the pdf
pdf.SecuritySettings.UserPassword = "password123";

pdf.SaveAs("protected.pdf");
Imports IronPdf

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Secret Information:</h1> Hello World")

' Password to edit the pdf
pdf.SecuritySettings.OwnerPassword = "123password"

' Password to open the pdf
pdf.SecuritySettings.UserPassword = "password123"

pdf.SaveAs("protected.pdf")
$vbLabelText   $csharpLabel

结果是以下PDF,您可以通过输入密码password123查看。

Icon Quote related to 当用户输入每个密码时会发生什么?

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 当用户输入每个密码时会发生什么?

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 当用户输入每个密码时会发生什么?

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 当用户输入每个密码时会发生什么?

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 当用户输入每个密码时会发生什么?

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 当用户输入每个密码时会发生什么?

David Jones

首席软件工程师,Agorus Build

查看案例研究

如何打开有密码的 PDF?

FromFile 接受哪些参数?

FromFile方法接受两个主要参数:文件路径和一个可选的密码字符串。 在处理受密码保护的 PDF 文件时,您必须提供正确的密码作为第二个参数。 该方法可自动检测所提供的密码是用户密码还是所有者密码,并授予相应的访问级别。 这种无缝集成使您可以在 C# 应用程序中轻松处理受保护的文档。

如何处理不正确的密码尝试?

当提供的密码不正确时,IronPDF 会抛出一个特定异常,您可以捕获并适当处理该异常。 最佳实践包括实施 try-catch 块,以优雅地管理密码失败:

:path=/static-assets/pdf/content-code-examples/how-to/pdf-permissions-passwords-2.cs
try 
{
    var pdf = PdfDocument.FromFile("protected.pdf", userPassword);
    // Process the PDF
}
catch (IronPdf.Exceptions.IronPdfPasswordException ex)
{
    // Handle incorrect password
    Console.WriteLine("Invalid password provided");
}
Imports IronPdf.Exceptions

Try
    Dim pdf = PdfDocument.FromFile("protected.pdf", userPassword)
    ' Process the PDF
Catch ex As IronPdfPasswordException
    ' Handle incorrect password
    Console.WriteLine("Invalid password provided")
End Try
$vbLabelText   $csharpLabel

打开后能否移除密码保护?

是的,一旦您使用所有者密码打开PDF,您可以使用RemovePasswordsAndEncryption()方法移除所有密码保护。 当您需要分发先前受保护的文档或将其集成到不支持密码保护 PDF 的系统中时,这将非常有用。

本节描述如何打开带有密码的PDF。 PdfDocument.FromFile方法有第二个可选参数即密码。 提供正确的密码作为此参数以打开PDF。 该功能可与 IronPDF 的其他功能(如 合并 PDF 提取文本)很好地集成。

:path=/static-assets/pdf/content-code-examples/how-to/pdf-permissions-passwords-open-password.cs
using IronPdf;

var pdf = PdfDocument.FromFile("protected.pdf", "password123");

//... perform PDF-tasks

pdf.SaveAs("protected_2.pdf"); // Saved as another file
Imports IronPdf

Private pdf = PdfDocument.FromFile("protected.pdf", "password123")

'... perform PDF-tasks

pdf.SaveAs("protected_2.pdf") ' Saved as another file
$vbLabelText   $csharpLabel

如何配置高级安全和权限设置?

我可以控制哪些权限?

IronPDF通过SecuritySettings类提供细粒度的PDF权限控制。 您可以管理各种权限,包括

  • AllowUserAnnotations:控制用户是否可以添加注释和批注
    • AllowUserCopyPasteContent:限制文本和图像复制
    • AllowUserFormData:管理表单填写能力
    • AllowUserPrinting:设置打印权限,包括高质量或低分辨率打印
    • AllowUserEditing:控制文档修改权限

这些权限与密码保护相结合,可创建符合您特定要求的全面安全策略。

权限如何与密码交互?

权限设置根据密码配置的不同而表现不同。 在未设置密码的情况下,权限会被强制执行,但有可能被 PDF 编辑软件绕过。 只需输入用户密码,即可根据定义的权限进行访问。 然而,当同时设置两个密码时,用户密码提供受限制的访问权限,而所有者密码则覆盖所有权限,授予完全控制权。 这种分级系统可确保对不同用户角色进行适当的访问控制。

我可以设置哪些元数据字段?

ModifiedDate。 其他元数据属性包括Producer。 这些领域对于文档管理系统和合规要求至关重要。 您还可以设置自定义元数据字段,这对内部跟踪和分类特别有用。 在我们的详细指南中了解有关 metadata management 的更多信息。

何时应使用 MakePdfDocumentReadOnly?

当您需要创建最终的不可编辑版本的文档时,使用带某些访问控制的MakePdfDocumentReadOnly方法是理想的。 这种方法将密码保护和限制权限结合在一次调用中,非常适合用于存档、法律文件或最终报告,这些文件应保持不变。 在需要确保文档完整性的文档工作流程中尤其有用。

您还可以禁用用户注释、用户打印等功能,如下所示:

:path=/static-assets/pdf/content-code-examples/how-to/pdf-permissions-passwords-advanced.cs
using IronPdf;

// Open an Encrypted File, alternatively create a new PDF from HTML
var pdf = PdfDocument.FromFile("protected.pdf", "password123");

// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// Save the secure PDF
pdf.SaveAs("secured.pdf");
Imports IronPdf

' Open an Encrypted File, alternatively create a new PDF from HTML
Private pdf = PdfDocument.FromFile("protected.pdf", "password123")

' Edit file security settings
' The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights

' Save the secure PDF
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

权限设置与文档密码相关,并按以下方式运行。 例如,将AllowUserCopyPasteContent属性设置为false旨在防止内容的复制/粘贴:

  • 未设置密码:没有密码的情况下,内容的复制粘贴仍然被阻止。
  • 设置用户密码:设置用户密码时,输入正确的密码将允许复制粘贴内容。
  • 设置所有者密码:设置所有者密码时,只输入用户密码将无法解锁复制粘贴功能。 然而,输入正确的所有者密码将允许复制粘贴内容。
文件权限对话框显示已禁用的安全功能,仅启用了打印功能

一个密切相关的文章讨论了预定义和自定义元数据。 通过遵循此链接了解更多信息:"如何设置和编辑PDF元数据。"

准备好看看您还能做些什么吗? 查看我们的教程页面:签名和保护PDFs

对于需要高级安全功能的企业应用程序,可考虑探索PDF/A 合规性以实现长期文档保存,或实施带有 HSM 的数字签名以增强身份验证。 IronPDF 的安全功能可与 Azure 部署方案无缝集成,并支持各种 渲染选项,以满足您的特定要求。

常见问题解答

如何在 C# 中为 PDF 文件添加密码保护?

通过设置 SecuritySettings 属性,您可以使用 IronPDF 为 PDF 添加密码保护。只需加载 PDF 文档,然后设置 UserPassword 属性以要求打开文件时输入密码,和/或设置 OwnerPassword 属性以控制编辑权限。IronPDF 支持 128 位加密,可对文档进行安全保护。

PDF 的用户密码和所有者密码有什么区别?

在 IronPDF 中,打开和查看 PDF 文档需要用户密码(或打开密码),而所有者密码(或权限密码)则控制用户可以在文档上执行哪些操作,如编辑、打印或复制内容。您可以使用 SecuritySettings.UserPassword 和 SecuritySettings.OwnerPassword 属性独立设置这两个密码。

能否阻止用户打印或复制 PDF 中的内容?

是的,IronPDF 允许您对 PDF 文档设置细粒度权限。您可以使用 SecuritySettings.Permissions 属性来限制打印、复制或编辑等操作。例如,设置 Permissions.NoPrinting 将阻止用户打印文档,即使他们拥有用户密码。

PDF 安全功能支持什么级别的加密?

IronPDF 支持对 PDF 文档进行 128 位加密,为您的敏感文件提供企业级安全保护。当您使用 SecuritySettings 属性为 PDF 文档设置密码或权限时,该加密级别会自动应用。

如何从现有 PDF 中移除密码保护?

要使用 IronPDF 从 PDF 中移除密码保护,首先需要通过向 FromFile 方法提供密码来打开受保护的文档。打开后,您可以通过将 UserPassword 和 OwnerPassword 属性重置为空字符串来清除安全设置,然后保存文档,使其不受保护。

在将 HTML 转换为 PDF 时,能否添加安全设置?

是的,IronPDF 允许您在将 HTML 转换为 PDF 后立即应用安全设置。从 HTML 内容创建 PDF 后,您可以访问 SecuritySettings 属性,在保存最终文档前设置密码和权限,确保转换后的文件从一开始就受到保护。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 20,088,359 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。