代码之家  ›  专栏  ›  技术社区  ›  whytheq

密码保护PDF文件

c#
  •  14
  • whytheq  · 技术社区  · 12 年前

    我有以下资料:

    • 例程X,它每天创建一个PDF文件。
    • 例程Y,将此文件附加到Outlook电子邮件并发送给收件人。

    以上两项都在VBA中。它们是从C#控制台应用程序调用的。

    创建PDF后,我需要对其进行密码保护。 在不购买第三方软件的情况下通过VBA实现这一点是相当复杂的。

    使用C#最简单的解决方案是什么?

    (我怀疑我们的花费和答案的复杂性之间会有相反的关系!)

    2 回复  |  直到 12 年前
        1
  •  29
  •   Daniel Hilgarth Richard    12 年前

    PDFSharp 应该能够使用密码保护PDF文件:

    // Open an existing document. Providing an unrequired password is ignored.
    PdfDocument document = PdfReader.Open(filename, "some text");
    
    PdfSecuritySettings securitySettings = document.SecuritySettings;
    
    // Setting one of the passwords automatically sets the security level to 
    // PdfDocumentSecurityLevel.Encrypted128Bit.
    securitySettings.UserPassword  = "user";
    securitySettings.OwnerPassword = "owner";
    
    // Don't use 40 bit encryption unless needed for compatibility reasons
    //securitySettings.DocumentSecurityLevel = PdfDocumentSecurityLevel.Encrypted40Bit;
    
    // Restrict some rights.
    securitySettings.PermitAccessibilityExtractContent = false;
    securitySettings.PermitAnnotations = false;
    securitySettings.PermitAssembleDocument = false;
    securitySettings.PermitExtractContent = false;
    securitySettings.PermitFormsFill = true;
    securitySettings.PermitFullQualityPrint = false;
    securitySettings.PermitModifyDocument = true;
    securitySettings.PermitPrint = false;
    
    // Save the document...
    document.Save(filename);
    

    参考文献:
    http://www.pdfsharp.net/wiki/ProtectDocument-sample.ashx

        2
  •  2
  •   Hakan Fıstık MuriloKunze    1 年前

    仅适用于.NET Core/.NET 5及更高版本


    PdfSharp 仅适用于 旧的.NET框架
    PdfSharpCore 同一个库刚刚移植到新的吗 .NET(.NET核心)

    以上内容 answer by @Daniel Hilgarth 仍然可以工作,而不会对带有移植库的代码进行任何更改。

    注释 这个图书馆在 MIT LICENSE ,所以没什么好担心的。