C# 使用iTextSharp加密PDF文档

C# 使用iTextSharp加密PDF文档,c#,pdf,encryption,itextsharp,C#,Pdf,Encryption,Itextsharp,我想通过不允许填写和复制PDF文档来保护我的PDF文档。我用iTextSharp来做这个。我有以下代码: PdfReader reader = new PdfReader(document, System.Text.Encoding.UTF8.GetBytes(PASSWORD)); using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reade

我想通过不允许填写和复制PDF文档来保护我的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上进行了测试)并检查“文件>属性>安全性”时,对文档的填写和复制没有任何限制,它们的状态是允许的


该代码中是否存在任何问题?

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

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

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

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

谢谢@M.Babcock您说得对。问题解决了。我现在可以看到所有选项的不允许状态。有一点仍然不清楚,Pdf属性显示“不允许”和“复制内容”选项,但我仍然可以从一些字段(不是所有字段)复制文本。谢谢@M.Babcock,你说得对。问题解决了。我现在可以看到所有选项的不允许状态。有一点仍然不清楚,Pdf属性显示“不允许”和“复制内容”选项,但我仍然可以从一些字段(不是所有字段)复制文本。谢谢@M.Babcock,你说得对。问题解决了。我现在可以看到所有选项的不允许状态。有一点仍然不清楚,Pdf属性显示“不允许”和“复制内容”选项,但我仍然可以从一些字段(不是所有字段)复制文本。谢谢@M.Babcock,你说得对。问题解决了。我现在可以看到所有选项的不允许状态。有一点仍然不清楚,Pdf属性显示“不允许”和“复制内容”选项,但我仍然能够从一些字段(不是所有字段)复制文本。