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

Stworzyłem plik pdf bezpośrednio z bazy danych. Muszę chronić plik pdf hasłem.chronić plik pdf z hasłem 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(); 
       } 
      } 
     } 

Udało mi się zabezpieczyć plik pdf hasłem z powyższym kodem, ale działa tylko z plikiem PDF, który jest generowany z widoku siatki. Czy ktoś może mi pokazać, jak zabezpieczyć plik pdf hasłem wygenerowanym pierwszą metodą przez coś podobnego do mojego drugiego kodu?

Odpowiedz

3

ustawić hasło użytkownika w SecuritySettings

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

W web.config, add key elementem dodać ścieżki i mam Date of Birth jako PDF Password. Zamiast tego możesz użyć 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); 
         } 
        } 



      }