【问题标题】:protect pdf file with password c#用密码c#保护pdf文件
【发布时间】:2017-11-17 10:21:44
【问题描述】:
        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);

我直接从数据库创建了一个 pdf 文件。我需要用密码保护 pdf 文件。

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

我设法用上面的代码用密码保护了 pdf 文件,但它只适用于从 gridview 生成的 pdf 文件。有人可以告诉我如何使用类似于我的第二个代码的第一种方法生成的密码来保护 pdf 文件吗?

【问题讨论】:

    标签: c# asp.net pdf encryption passwords


    【解决方案1】:

    在SecuritySettings中设置用户密码

        pdf.SecuritySettings.UserPassword = "your password";
    

    【讨论】:

      【解决方案2】:

      web.configadd key 元素中添加路径和 我有Date of Birth 作为PDF Password。您可以使用anything 代替它。

      <add key="Inputfile" value=”Path of pdf file where it is getting saved…”>
              <add key="Outputfile" value=”Path of pdf file where it has to be saved after getting password protected…”>   
      
      
              protected void passwordProtect(DateTime DateofBirth)
                      {
                          string yourpdf = ConfigurationManager.AppSettings["Inputfile"];
                          string pdfWithPasswordA = ConfigurationManager.AppSettings["Outputfile"];
                          string InputFileA = yourpdf;
                          string OutputFileA = pdfWithPasswordA;
      
                          using (Stream input = new FileStream(InputFileA, FileMode.Open, FileAccess.Read, FileShare.Read))
                          {
                              using (Stream output = new FileStream(OutputFileA, FileMode.Create, FileAccess.Write, FileShare.None))
                              {
                                  PdfReader reader = new PdfReader(input);
                                  PdfEncryptor.Encrypt(reader, output, true, DateofBirth.ToString("yyyyMMdd"), "secret", PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_COPY);
                              }
                          } 
      
      
      
                  }
      

      【讨论】:

        猜你喜欢
        • 2012-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        • 2020-12-21
        相关资源
        最近更新 更多