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文件,类似于我的第二个代码吗?
答案 0 :(得分:4)
在SecuritySettings中设置用户密码
pdf.SecuritySettings.UserPassword = "your password";
答案 1 :(得分:0)
在web.config
,add 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);
}
}
}
答案 2 :(得分:-1)
用于.NET API的GroupDocs.Merger,无论是否在服务器上安装了MS Office或任何PDF阅读器,您都不仅可以保护/保护PDF文件,而且还可以保护/保护MS Office文档。
string password = "iamironman";
Stream openFile = new FileStream(sourceFile, FileMode.Open);
DocumentResult result = new DocumentHandler().AddPassword(openFile, password);
Stream documentStream = result.Stream;
var fileStream = File.Create(@"D:/Data/Output." + result.FileFormat);
documentStream.CopyTo(fileStream);
documentStream.Close();
披露:我是GroupDocs的一名开发人员。