使用iTextSharp加密PDF文档

时间:2014-01-19 06:18:55

标签: c# pdf encryption itextsharp

我想通过不允许填写和复制来保护我的PDF文档。我正在使用iTextSharp。我有以下代码:

  PdfReader reader = new PdfReader(document, System.Text.Encoding.UTF8.GetBytes(PASSWORD));
  using (MemoryStream ms = new MemoryStream())
  {
      using (PdfStamper stamper = new PdfStamper(reader, ms))
      {
           stamper.SetEncryption(
               null,
               Encoding.ASCII.GetBytes(PASSWORD),
               PdfWriter.ALLOW_PRINTING,
               PdfWriter.ENCRYPTION_AES_128);
      }
  }

  reader.Close();

生成文档时,我使用该代码加密文档。但后来当我在Adobe Reader中打开文档(在9和11上测试)并检查'文件>属性>安全'他们对文件的填写和复制没有任何限制,他们的状态是允许的。

该代码中是否有任何问题?

1 个答案:

答案 0 :(得分:3)

根据ITextSharp documentation for PdfStamper,此方法的第二个参数是表示加密的PDF文档数据的目标的输出流。您在问题中显示的代码只是在您设置加密后处理MemoryStream,因此此代码可能适用于您的PDF文档的任何更改都不会保存到磁盘或以其他方式在您的应用程序之外可用。