1

我使用以下代码:

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不创建其他文件的情况下提供输入文件的密码。

4

3 回答 3

1

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

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

你也可以看到这个链接

于 2012-05-31T10:15:30.240 回答
1

It must be done this way unfortunately.

I would suggest you:

  1. Create the unsigned PDF in the system TEMP folder
  2. Sign it, outputting to the location and file name you want
  3. Clean up - delete the temp file.
于 2012-05-31T09:58:04.413 回答
0

使用 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);
            }
        }
于 2016-02-05T04:50:24.653 回答