2017-06-15 175 views
6
 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文件。用密碼保護pdf文件c#

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文件?

回答

3

設定SecuritySettings

pdf.SecuritySettings.UserPassword = "your password"; 
0

用戶密碼在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); 
         } 
        } 



      }