C# 将密码传递到pdf安全处理程序

C# 将密码传递到pdf安全处理程序,c#,pdf,pdftron,C#,Pdf,Pdftron,我目前正在从事一个项目,在成功调用返回密码的api后,可以解密pdf。 我浏览了SO和pdftron SDK,但找不到关于如何将此密码插入安全处理程序的最终解决方案 我尝试过的事情: 似乎没有任何GetSecurityHandler()方法可以处理密码插入: SecurityHandler handler = m_PdfDocument.GetSecurityHandler(); 接受密码字符串,但引发错误: m_PdfDocument.InitStdSecurityHandler(pwd)

我目前正在从事一个项目,在成功调用返回密码的api后,可以解密pdf。 我浏览了SO和pdftron SDK,但找不到关于如何将此密码插入安全处理程序的最终解决方案

我尝试过的事情:

似乎没有任何
GetSecurityHandler()
方法可以处理密码插入:

 SecurityHandler handler = m_PdfDocument.GetSecurityHandler();
接受密码字符串,但引发错误:

m_PdfDocument.InitStdSecurityHandler(pwd);
错误:消息:不是标准的安全处理程序。需要注册自定义筛选器

根据消息判断,我假设需要
mpdfdocument.InitSecurityHandler()
,但该方法不接受字符串,只接受int

任何人都可以将我推到正确的轨道上?

根据页面,初始化另一个处理程序后会使用
GetSecurityHandler()
,因此既然
InitSecurityHandler()
接受一个int,您就可以这样做

    string password = "9quali52ty3";

    // Convert the string into a byte[].
    byte[] asciiBytes = Encoding.ASCII.GetBytes(password);
    string compiledBytes = System.Text.Encoding.ASCII.GetString(asciiBytes);
    int convertedBytes = int.Parse(compiledBytes);
    m_PdfDocument.InitSecurityHandler(convertedBytes);
    m_PdfDocument.GetSecurityHandler();
一个很好的编程经验法则:从一种数据类型到另一种数据类型总是有办法的。 以下页面中的@Brig Lamoreaux、@Zanoni和@Brandon

感谢您发送此文件。此文件使用自定义加密进行加密。你的数字版权管理。没有PDF阅读器可以打开该文件,但可以打开您自己的自定义PDF阅读器

要使用PDFNet打开PDF,首先需要了解文件是如何加密的,而实际上恰恰相反。我假设另一个加密团队也在解密,至少是为了测试目的

它可能与我们的示例中的示例3一样简单。在这种情况下,您只需要在其他团队使用的筛选器名称下注册。我想我知道那是什么,但不会在这里发布,而是会给你发电子邮件

但对于其他人来说,如果PDF是用一个名为“Frodo”的过滤器加密的,那么它就是

CreateDelegate frodo_del = new CreateDelegate(FrodoSecurityHandler.Create);
SecurityManagerSingleton.Instance().RegisterSecurityHandler("Frodo", new SecurityDescriptor("Frodo Security", frodo_del));

您是否能够在PDF阅读器(如Foxit/Adobe)中打开PDF?这种情况会发生在任何受密码保护的文件上,还是只发生在某些文件上?你加密文件了吗?怎么做?在另一个阅读器中,它说文件是加密的。我们需要打开的文件是加密的教育文件。他们是由我们合作的另一家公司创建的,他们为有学习障碍的学生提供带有DRM保护的pdf,我们的tts软件将能够在成功完成apicall后解密文件。如果呼叫成功,则返回密码。一切都井然有序,我只需将密码放入pdf进行解密。用户无法知道密码,我需要以编程方式传递密码。此外:加密本身是由pdftron开发的,但由我们合作的公司外包。经过一些研究,我们得出结论,我们需要用一个ID(需要传递的int)初始化自定义安全处理程序,但由于他们没有对其进行编程,他们也不知道……问题是文件是标准加密的,还是自定义加密的。您是否可以将其中一个文件连同密码一起发送到pdftron或在此处发布。如果没有,则windows PDFNet SDK中有一个名为CoEdit的工具。您可以在其中打开文件(跳过密码输入),检查/traile/Encrypt/Filter密钥并在此处发布。它是自定义加密的。我不能用COSEdit打开它们,它会立即出错。我将向pdftron支持部门发送一个带有密码的文件。