如何以编程方式打开受密码保护的 PDF 文件?

2023-11-29

Adobe IFilter 不提供提供密码来打开受密码保护的 PDF 文件的机制,因此它不能用于打开受密码保护的文件。

我想知道,是否有一种相对简单的方法来以编程方式检索 PDF 文件中的实际加密数据,使用标准加密 API 对其进行解密,然后使用解密的数据构建一个新的 PDF 文件?


要打开受密码保护的 PDF,您至少需要开发一个 PDF 解析器、解密器和生成器。不过,我不建议这样做。这绝不是一件容易完成的任务。

在 PDF 库的帮助下,一切都变得更加简单。你可能想尝试Docotic.Pdf 库的任务(免责声明:我为图书馆的供应商工作)。

这是您的任务示例:

public static void unprotectPdf(string input, string output)
{
    bool passwordProtected = PdfDocument.IsPasswordProtected(input);
    if (passwordProtected)
    {
        string password = null; // retrieve the password somehow

        using (PdfDocument doc = new PdfDocument(input, password))
        {
            // clear both passwords in order
            // to produce unprotected document
            doc.OwnerPassword = "";
            doc.UserPassword = "";

            doc.Save(output);
        }
    }
    else
    {
        // no decryption is required
        File.Copy(input, output, true);
    }
}

Docotic.pdf还可以从 PDF 中提取文本(格式化或未格式化)。它可能对索引很有用(我猜这就是你要做的,因为你提到了 Adob​​e IFilter)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式打开受密码保护的 PDF 文件? 的相关文章

  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

    遵循电子书第 4 3 3 节 PDF 文档的数字签名 https jira nuxeo com secure attachment 49931 digitalsignatures20130304 pdf 我正在尝试创建一个工作示例 其中 客
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • VB.NET 中的静态方法实现

    我很困惑Static在 VB NET 中的实现 在 C 中 我们可以创建静态类和静态方法来为我们的应用程序编写实用方法 现在 VB NET 让我们创建Module代替静态类 如果我们在模块中创建一个方法 默认情况下它会变成静态的 但在我的应
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 自动将文件部署到 Amazon S3?

    我有一个 Rails 项目 我将把它部署到令人惊叹的地方Heroku 我真的希望能够自动将我的资源推送到 Amazon S3 本例中的资源是我的图像 样式表和 JavaScript 显然 我可以自己编写某种 capistrano 任务来执行
  • 使用 Swift 中其他视图中的视图输入的文本(Xcode 6)

    我对 Swift 和 Xcode 几乎完全陌生 所以请原谅我在这个领域缺乏知识 目前我有一个带有标签的视图控制器 我想在此之前添加一个视图 其中有一个文本字段 用户在其中输入名称 然后应用程序转到带有标签的第二个视图 其中用户输入的名称放置
  • Spring 中的 NoClassDefFoundError

    我编写了一个在 Weblogic 10 3 上运行的 Spring 应用程序 在此应用程序中 我有一些 JMS 队列使用者 有时 当应用程序关闭或打开时 我会收到错误消息 我在两种情况下都看到了此错误 java lang NoClassDe
  • 如何在 Google Colab 上安装 auto-sklearn?

    我想用自动学习 我使用了这个代码document 所有软件包均已安装 但我遇到了这样的错误 curl https raw githubusercontent com automl auto sklearn master requiremen
  • 并行流上的 Skip() 是否存在良好的用例?

    2015 年 9 月编辑 当我最初于 2015 年 2 月提出这个问题时 该行为在链接的问题虽然是违反直觉的kind of规范允许 尽管文档中存在一些小小的不一致 然而 Tagir Valeev 在 2015 年 6 月 提出了一个新问题
  • VBA Microsoft Word - 序列号

    我已经手动完成了此操作 我想将 ZXZ 的每个实例替换为从 1 一直到 Word 文档中最后一次出现的 ZXZ 的序列号 基本上 我想要实现的是在特定的Word文档中运行Word VBA宏 其中VBA宏从文件顶部开始搜索 查找每个出现的ZX
  • 点击后退按钮完成 UITextField 的编辑

    我的 NavigationController 中有 2 个控制器 首先将第二个推入堆栈 用户可以与那里的文本字段进行交互 然后 在一种情况下 用户将点击后退按钮以转到上一个屏幕 假设第二个实例的加载是 重 的 所以一旦需要 我将只保留它的
  • Python 中与密钥库的 https 握手

    我设置了一个 Web 服务器 该服务器拒绝没有有效 p12 证书的连接 我需要通过 Python 脚本访问在服务器上运行的 REST API 但我找不到有关如何执行此操作的任何信息 如果有人有关于如何在 Python 中使用 p12 证书执
  • 如何增加 VC9 (MSVC 2008) 中允许的修饰名称长度?

    我有一组相当大且复杂的程序要从 VC8 移植到 VC9 其中一个模块具有许多分层的 typedef 这会导致编译器生成 C4503 警告 修饰名被截断 生成的LIB文件将无法正确链接到项目中的其他模块 VC8 对此没有遇到任何问题 这让我得
  • Android - 是否可以通过编程方式获取安装引荐来源网址

    我注意到浏览器中的一些 Google Play 应用程序链接有referrer 它们的属性 这显然告诉了将您发送到 Google Play 中该应用程序页面的引荐来源网址 是否可以在我的应用程序代码中看到该引荐来源网址 如果有 如果没有 是
  • 通过蓝牙IPhone SDK发送字符串

    如何将字符串从 iPhone 发送到另一个设备 android pc 等 EDITED 以下代码用于通过蓝牙传输消息 视图控制器 h 文件 import
  • 使用 JAXB 编组/解组 Java 超类和子类

    我一直在尝试 JAXB 教程 并设法使代码能够从 Java 对象生成 XML 文件 然后能够使用 XML 生成 Java 对象 目前 它读取同一类的多个实例来创建一个类似于以下文件的 XML 文件
  • 无法进入已加载符号的 Nuget 库

    我已将 Nuget 库上传到 Azure Devops Artifacts 中 它还将符号文件 PDB 发布到 Azure Devops 符号服务器 我在 Visual Studio 中添加了设置 以便按照上述说明从 Azure Devop
  • 在Delphi XE中使用UIDocumentInteractionController

    我有一个 Delphi XE5 应用程序 可以在设备上本地下载和存储 PDF 我在表单上有一个 TWebBrowser 来查看 PDF 它工作得很好 我现在希望与其他应用程序 例如 Safari Mail 等 共享 PDF 但我真的很挣扎
  • xUnit.net:全局设置+拆卸?

    这个问题是关于单元测试框架的xUnit net 我需要在执行任何测试之前运行一些代码 并在所有测试完成后运行一些代码 我认为应该有某种属性或标记接口来指示全局初始化和终止代码 但找不到它们 或者 如果我以编程方式调用 xUnit 我也可以使
  • 将 HTML 选择存储到变量中/在 Google 表格中使用该数据

    我几乎已经有了一个 HTML 表单选择器 它根据 google 表格列中的数据创建一个数组 完成 并将该数据填充到下拉框中 完成 我整个周末一直在尝试弄清楚如何捕获下拉选项的选择 然后将其合并到一个变量中 这是我的启动 HTML 弹出窗口的
  • 将图例宽度设置为 100% 绘图宽度

    无论实际尺寸如何 如何将图例高度或宽度设置为绘图高度 宽度的 100 library ggplot2 ggplot iris aes Petal Width Sepal Width color Petal Length geom point
  • jquery加载函数问题

    我正在尝试使用 jquery 加载函数在按下按钮时将转换为 DAE 文件的 3D 模型加载到目标 div 中 然而 当按下按钮时 屏幕上会出现与文件相关的大量数字 而不是模型 这是问题的屏幕截图 如果不可能做到这一点 我还想知道是否可以使用
  • Java 字符串连接

    我的 java 代码有问题 我昨天问了同样的问题 我得到了答复 但很抱歉这是我的错 我的问题不清楚 我的代码如下所示 for i 0 i lt geo getTargets length i if geo getTargets i getT
  • 如何以编程方式打开受密码保护的 PDF 文件?

    Adobe IFilter 不提供提供密码来打开受密码保护的 PDF 文件的机制 因此它不能用于打开受密码保护的文件 我想知道 是否有一种相对简单的方法来以编程方式检索 PDF 文件中的实际加密数据 使用标准加密 API 对其进行解密 然后