如何向 PDF 文件添加密码保护

本文关键字:添加 密码保护 文件 PDF | 更新日期: 2023-09-27 18:35:47

我使用以下代码:

string WorkingFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string InputFile = Path.Combine(WorkingFolder, "PSNOs.pdf");
string OutputFile = Path.Combine(WorkingFolder, "PSNOs_enc.pdf");
using (Stream input = new FileStream(InputFile, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (Stream output = new FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None))
    {
        PdfReader reader = new PdfReader(input);
        PdfEncryptor.Encrypt(reader, output, true, null, "secret", PdfWriter.ALLOW_SCREENREADERS);
    }
} 

但它正在创建另一个文件并向输出文件添加密码。但我不想像上面那样创建两个文件。我想为输入文件提供密码PSNOs.pdf而不创建另一个文件。

如何向 PDF 文件添加密码保护

不幸的是,

它必须以这种方式完成。

我建议你:

  1. 在系统 TEMP 文件夹中创建未签名的 PDF
  2. 签名,输出到您想要的位置和文件名
  3. 清理 - 删除临时文件。

根据itextsharp文档,它可以在新创建的pdf中设置密码。它不能给现有的pdf文件提供密码。

因此,您希望在不创建新文件的情况下保护密码是不可能的 itextsharp. 要制作受密码保护的pdf,您必须使用输出文件(由PdfEncryptor.Encrypt()方法创建密码保护)并删除输入pdf。

您也可以看到此链接

使用 iTextSharp 创建受密码保护的 PDF

   string sourcePdf = @"D:'unsecuredfolder'unsecuredPage.pdf";
        using (Stream input = new FileStream(sourcePdf , FileMode.Open, FileAccess.Read, FileShare.Read))
               //Passowrd the pwd for PDF security                 
   string destPdf = @"D:'securedfolder'securedPage.pdf";
         /sourcePdf  unsecured PDF file
       //destPdf secured PDF file
        {
            using (Stream output = new FileStream(destPdf , FileMode.Create, FileAccess.Write, FileShare.None))
            {
                PdfReader reader = new PdfReader(input);
                string Password="abc@123";
                PdfEncryptor.Encrypt(reader, output, true, Password, Password, PdfWriter.ALLOW_PRINTING);
            }
        }