Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

protect pdf file with password c#

        connetionString = ConfigurationManager.ConnectionStrings["conString"].ToString();
        sql = "select Id,employeeName,employeePosition from Employee";
        connection = new SqlConnection(connetionString);
        connection.Open();
        command = new SqlCommand(sql, connection);
        adapter.SelectCommand = command;
        adapter.Fill(ds);
        connection.Close();

        PdfDocument pdf = new PdfDocument();
        pdf.Info.Title = "Database to PDF";
        PdfPage pdfPage = pdf.AddPage();
        XGraphics graph = XGraphics.FromPdfPage(pdfPage);
        XFont font = new XFont("Verdana", 20, XFontStyle.Regular);

        yPoint = yPoint + 100;

        for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
        {
            pubname = ds.Tables[0].Rows[i].ItemArray[0].ToString();
            city = ds.Tables[0].Rows[i].ItemArray[1].ToString();
            state = ds.Tables[0].Rows[i].ItemArray[2].ToString();

            graph.DrawString(pubname, font, XBrushes.Black, new XRect(40, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);

            graph.DrawString(city, font, XBrushes.Black, new XRect(120, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);

            graph.DrawString(state, font, XBrushes.Black, new XRect(400, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);

            yPoint = yPoint + 40;
        }


        string pdfFilename = "dbtopdf.pdf";
        pdf.Save(pdfFilename);

I created a pdf file directly from the database. I need to protect the pdf file with the password.

using (MemoryStream ObjememoryStream = new MemoryStream())
        {
            PdfWriter.GetInstance(pdfDoc, ObjememoryStream);
            pdfDoc.Open();
            htmlworker.Parse(sr);
            pdfDoc.Close();
            byte[] Filebytes = ObjememoryStream.ToArray();
            ObjememoryStream.Close();
            using (MemoryStream inputData = new MemoryStream(Filebytes))
            {
                using (MemoryStream outputData = new MemoryStream())
                {
                    string PDFFileword = txtPassword.Text;//you can also generate Dynamic word  
                    PdfReader reader = new PdfReader(inputData);
                    PdfEncryptor.Encrypt(reader, outputData, true, PDFFileword, PDFFileword, PdfWriter.ALLOW_SCREENREADERS);
                    Filebytes = outputData.ToArray();
                    File.WriteAllBytes(destPath, Filebytes);
                    //Response.ContentType = "application/pdf";
                    //Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
                    //Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    //Response.BinaryWrite(Filebytes);
                    //Response.End();
                    GridView1.AllowPaging = true;
                    GridView1.DataBind();
                }
            }
        }

I managed to protect the pdf file with password with the code above, but it only works with the pdf file which is generate from a gridview. Can someone show me how to protect the pdf file with password which generated with first method by something similar to my second code?

like image 683
Chris Avatar asked Jun 15 '17 04:06

Chris


1 Answers

set the user password in SecuritySettings

    pdf.SecuritySettings.UserPassword = "your password";
like image 67
Abinash Avatar answered Sep 19 '22 13:09

Abinash