web-dev-qa-db-ja.com

パスワードで保護PDF C#を使用

プロセスでC#コードを使用してPDFドキュメントを作成しています。 「123456」のような標準のパスワードまたはアカウント番号でドキュメントを保護する必要があります。私はPDFライターのような参照dllなしでこれを行う必要があります。

SQL ReportingServicesレポートを使用してPDFファイルを生成しています。

最も簡単な方法はありますか?.

15
balaweblog

プロセスでC#コードを使用してPDFドキュメントを作成しています

このドキュメントを作成するためにライブラリを使用していますか? pdf仕様 (8.6MB)は非常に大きく、PDF操作を含むすべてのタスクはサードパーティのライブラリを使用しないと難しい場合があります。無料のオープンソースでPDFファイルをパスワードで保護および暗号化する itextsharp ライブラリは非常に簡単です。

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);
}
26
Darin Dimitrov

PDFライブラリを使用せずにこれを行うことは非常に困難です。基本的に、そのようなライブラリを自分で開発する必要があります。

PDFライブラリを使用すると、すべてがはるかに簡単になります。これは、 Docotic.Pdfライブラリ を使用してドキュメントを簡単に保護する方法を示すサンプルです。

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

免責事項:私は図書館のベンダーで働いています。

1
Bobrovsky

誰かがIText7リファレンスを探しているなら。

    private string password = "@d45235fewf";
    private const string pdfFile = @"C:\Temp\Old.pdf";
    private const string pdfFileOut = @"C:\Temp\New.pdf";

public void DecryptPdf()
{
        //Set reader properties and password
        ReaderProperties rp = new ReaderProperties();
        rp.SetPassword(new System.Text.UTF8Encoding().GetBytes(password));

        //Read the PDF and write to new pdf
        using (PdfReader reader = new PdfReader(pdfFile, rp))
        {
            reader.SetUnethicalReading(true);
            PdfDocument pdf = new PdfDocument(reader, new PdfWriter(pdfFileOut));
            pdf.GetFirstPage(); // Get at the very least the first page
        }               
} 
0
horseman1210