0

私はc#、itextsharpを使用してPDFを作成して署名しています。今、このコードをパスワード保護とデジタル署名に使用しています。最初にパスワードで保護しています。署名するよりも。

送信されたPDFは、開いているときにパスワードを要求していませんか?なぜこれが起こっているのか誰かに教えてもらえますか?

ありがとう..

string passprotectedfile = filename;

using (Stream input = new FileStream(signedfile, FileMode.Open, FileAccess.Read,
                                     FileShare.Read))
{
    using (Stream output = new FileStream(passprotectedfile, FileMode.Create, 
                                          FileAccess.Write, FileShare.None))
    {
        PdfReader reader = new PdfReader(input);
        PdfEncryptor.Encrypt(reader, output, true, regno.ToString(), "",
                             PdfWriter.ALLOW_SCREENREADERS);
    }
}

私がデジタル署名に使用しているコード。

        PdfReader reader = new PdfReader(filename,pass);
        Stream output = new FileStream(signedfile, FileMode.Create, FileAccess.Write, FileShare.None);
        PdfStamper stamper = PdfStamper.CreateSignature(reader, output, '\0');

        Rectangle rect = new Rectangle(455, 105, 555, 170);
        PdfSignatureAppearance appearance = stamper.SignatureAppearance;
        appearance.SetVisibleSignature(rect, 1, "sign");
        PdfSignature dic = new PdfSignature(PdfName.ADOBE_PPKLITE, new PdfName("adobe.pkcs7.detached"));
        PrivateKeySignature pks = new PrivateKeySignature(pk, "SHA-256");
        MakeSignature.SignDetached(appearance, pks, chain, null, null, null, 0, true);
        return filename;

それから私は送信しています。

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment;filename=tes2.pdf");
            Response.TransmitFile(signedfile);
            Response.Flush();

            File.Delete(signedfile);
            File.Delete(newfile);
            File.Delete(passprotectedfile);
4

1 に答える 1

2

PdfReaderiTextがパスワードで保護されたPDFを復号化できるようにする所有者パスワードを使用してインスタンスを作成しています。これが、パスワード保護がなくなった理由を説明しています。ファイルを復号化するようにiTextに指示しました。

署名され、暗号化されたファイルが必要な場合は、両方の操作を順番にではなく、一度に実行する必要があります。このPdfStamperクラスには、暗号化を設定できるさまざまなメソッドがあります。オブジェクトでこれらのメソッドの1つを使用しstamperます。

于 2012-09-22T12:38:27.167 に答える