2017-06-15 3 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); 

J'ai créé un fichier pdf directement à partir de la base de données. J'ai besoin de protéger le fichier pdf avec le mot de passe.protéger le fichier pdf avec mot de passe 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(); 
       } 
      } 
     } 

j'ai réussi à protéger le fichier pdf avec mot de passe avec le code ci-dessus, mais il fonctionne uniquement avec le fichier pdf qui est de générer à partir d'un gridview. Quelqu'un peut-il me montrer comment protéger le fichier pdf avec un mot de passe qui a été généré avec la première méthode par quelque chose de similaire à mon deuxième code?

Répondre

3

définir le mot de passe de l'utilisateur dans SecuritySettings

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

En web.config, élément add key ajouter des chemins et j'ai Date of Birth comme PDF Password. Vous pouvez utiliser anything à la place.

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



      }