You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iTextSharp5 PDF密码保护失效:为何生成文件无需密码即可打开?

问题原因与修正方案

你的代码问题出在PdfEncryptor.Encrypt方法的参数顺序错误,导致加密逻辑不符合预期:

在iTextSharp 5的PdfEncryptor.Encrypt方法中,第四个参数是用户密码(打开文件时需要输入的密码),第五个参数是所有者密码(用于修改文件权限、密码的管理密码)。你当前把用户密码设为了null,所有者密码设为"password"——当用户密码为null时,任何人均可直接打开文件,仅受权限限制,这就是Adobe Acrobat无需密码就能打开的原因。

修正后的代码

将用户密码和所有者密码的位置调换,根据需求设置对应密码:

using (Stream input = new FileStream(@"Original.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
{
   using (Stream output = new FileStream(@"New.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
   {
      PdfReader PDFreader = new PdfReader(input);
      // 用户密码设为"password"(打开需输入),所有者密码可设为独立值或与用户密码一致
      PdfEncryptor.Encrypt(PDFreader, output, true, "password", "ownerPass", PdfWriter.ALLOW_SCREENREADERS);
   }
}

参数说明

  • true:启用128位高强度加密(兼容Acrobat 5及以上版本)
  • 第四个参数:用户密码,为空则无需密码即可打开文件
  • 第五个参数:所有者密码,用于修改文件权限、重置密码等操作
  • PdfWriter.ALLOW_SCREENREADERS:设置文件权限,这里允许屏幕阅读器访问,可根据需求调整为其他权限(如禁止打印、修改等)

内容的提问来源于stack exchange,提问作者BenevolentDeity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:43:19