/// <summary> /// 创建新PDF(权限控制) /// 至于异常处理自己看着加(会损失一点性能) /// </summary> /// <param name="oldFile">原文件路径</param> /// <param name="newFile">目标文件路径</param> public static void SaveNewPDF(string oldFile, string newFile) { try { //创建PDF阅读器 PdfReader reader = new PdfReader(oldFile); //创建一个新文档 Document document = new Document(); //创建原文件文件流 FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write); //创建PDF写入器 PdfWriter writer = PdfWriter.GetInstance(document, fs); /* * PDF浏览权限设置 * true、用户密码、所有者密码、0 * */ writer.SetEncryption(true, null, null, 0); //打开文档进行编辑 document.Open(); //创建PDF内容目标对象 PdfContentByte cb = writer.DirectContent; //获取原文件的总页数 int pagecount = reader.NumberOfPages; //导入原PDF文件到新文件 for (int i = 1; i <= pagecount; i++) { //设置页大小 document.SetPageSize(reader.GetPageSizeWithRotation(i)); //开辟一个新页 document.NewPage(); //获取当前页 PdfImportedPage page = writer.GetImportedPage(reader, i); cb.AddTemplate(page, 0, 0); } //关闭文档对象 document.Close(); //关闭文件流 fs.Close(); //关闭写入器 writer.Close(); //关闭读取器 reader.Close(); } catch (Exception) { throw; } }