使用C#密码保护的PDF

时间:2008-12-16 06:13:51

标签: c# pdf-generation

我正在使用C#代码创建一个pdf文档。我需要保护docuemnt 使用一些标准密码,如“123456”或某个帐号。我不需要这样做 任何参考dll,如pdf writer。

我正在使用SQL Reporting Services报告生成PDF文件。

是否有最简单的方法。

2 个答案:

答案 0 :(得分:26)

  

我正在使用C#创建一个pdf文档   我的流程中的代码

您是否使用某些库来创建此文档? pdf specification(8.6MB)非常大,如果不使用第三方库,所有涉及pdf操作的任务都很困难。使用免费的开源itextsharp库来保护和加密您的pdf文件非常简单:

using (Stream input = new FileStream("test.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream output = new FileStream("test_encrypted.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
{
    PdfReader reader = new PdfReader(input);
    PdfEncryptor.Encrypt(reader, output, true, "secret", "secret", PdfWriter.ALLOW_PRINTING);
}

答案 1 :(得分:1)

如果不使用PDF库,这将是非常困难的。基本上,你需要自己开发这样的库。

借助PDF库,一切都变得更加简单。以下示例显示了如何使用Docotic.Pdf library轻松保护文档:

public static void protectWithPassword(string input, string output)
{
    using (PdfDocument doc = new PdfDocument(input))
    {
        // set owner password (a password required to change permissions)
        doc.OwnerPassword = "pass";

        // set empty user password (this will allow anyone to
        // view document without need to enter password)
        doc.UserPassword = "";

        // setup encryption algorithm
        doc.Encryption = PdfEncryptionAlgorithm.Aes128Bit;

        // [optionally] setup permissions
        doc.Permissions.CopyContents = false;
        doc.Permissions.ExtractContents = false;

        doc.Save(output);
    }
}

免责声明:我为图书馆的供应商工作。