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);
    }
} 

ただし、別のファイルを作成し、出力ファイルにパスワードを追加しています。しかし、私は上記のような2つのファイルを作成したくありません。PSNOs.pdf他のファイルを作成せずに、入力ファイルのパスワードを指定したい。

4

3 に答える 3

1

残念ながら、この方法で行う必要があります。

私はあなたに提案します:

  1. システムのTEMPフォルダに署名されていないPDFを作成します
  2. 署名して、必要な場所とファイル名に出力します
  3. クリーンアップ-一時ファイルを削除します。
于 2012-05-31T09:58:04.413 に答える
1

itextsharpのドキュメントによると、新しく作成されたpdfにパスワードを設定できます。既存のPDFファイルにパスワードを与えることはできません。

したがって、新しいファイルを作成せずにパスワードを保護したい場合は、itextsharpを使用することはできません。パスワードで保護されたPDFを作成するには、出力ファイル(PdfEncryptor.Encrypt()メソッドによってパスワードで保護されて作成されたファイル)を使用し、入力pdfを削除する必要があります。

このリンクも見ることができます

于 2012-05-31T10:15:30.240 に答える
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 に答える