将密码传递给 pdf 安全处理程序
Passing a password into the pdf security handler
我目前正在做一个项目,在成功 api 调用 returns 密码后可以解密 pdf。
我浏览了 SO 和 pdftron SDK,但找不到关于如何将此密码插入安全处理程序的最终解决方案。
我尝试过的事情:
None GetSecurityHandler()
方法似乎处理密码插入:
SecurityHandler handler = m_PdfDocument.GetSecurityHandler();
获取密码字符串但抛出错误:
m_PdfDocument.InitStdSecurityHandler(pwd);
错误:消息:不是标准的安全处理程序。需要注册自定义过滤器。
从消息来看,我假设我需要 m_PdfDocument.InitSecurityHandler()
,但该方法不接受字符串,只接受 int。
谁能帮我找到正确的轨道?
好吧,根据 this 页面,GetSecurityHandler()
在您初始化另一个处理程序后使用,因此由于 InitSecurityHandler()
需要一个整数,您可以这样做
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 在以下页面上。
Brig Zanoni Brandon
感谢您发送文件。此文件使用自定义加密进行加密。你的数字版权管理。没有PDFreader可以打开文件,但是你自己的自定义PDFreader.
要用 PDFNet 打开 PDF,您首先需要找出文件是如何加密的,实际上做相反的事情。我假设进行加密的另一个团队也在解密,至少是出于测试目的?
它可能就像我们 Encryption sample 中的示例 3 一样简单。在这种情况下,您只需要在其他团队使用的过滤器名称下注册。我想我知道那是什么,但不会 post 在这里,而是会给你发电子邮件。
但对于其他人来说,如果 PDF 使用名为 "Frodo" 的过滤器加密,那么它将是
CreateDelegate frodo_del = new CreateDelegate(FrodoSecurityHandler.Create);
SecurityManagerSingleton.Instance().RegisterSecurityHandler("Frodo", new SecurityDescriptor("Frodo Security", frodo_del));
我目前正在做一个项目,在成功 api 调用 returns 密码后可以解密 pdf。 我浏览了 SO 和 pdftron SDK,但找不到关于如何将此密码插入安全处理程序的最终解决方案。
我尝试过的事情:
None GetSecurityHandler()
方法似乎处理密码插入:
SecurityHandler handler = m_PdfDocument.GetSecurityHandler();
获取密码字符串但抛出错误:
m_PdfDocument.InitStdSecurityHandler(pwd);
错误:消息:不是标准的安全处理程序。需要注册自定义过滤器。
从消息来看,我假设我需要 m_PdfDocument.InitSecurityHandler()
,但该方法不接受字符串,只接受 int。
谁能帮我找到正确的轨道?
好吧,根据 this 页面,GetSecurityHandler()
在您初始化另一个处理程序后使用,因此由于 InitSecurityHandler()
需要一个整数,您可以这样做
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 在以下页面上。
Brig Zanoni Brandon
感谢您发送文件。此文件使用自定义加密进行加密。你的数字版权管理。没有PDFreader可以打开文件,但是你自己的自定义PDFreader.
要用 PDFNet 打开 PDF,您首先需要找出文件是如何加密的,实际上做相反的事情。我假设进行加密的另一个团队也在解密,至少是出于测试目的?
它可能就像我们 Encryption sample 中的示例 3 一样简单。在这种情况下,您只需要在其他团队使用的过滤器名称下注册。我想我知道那是什么,但不会 post 在这里,而是会给你发电子邮件。
但对于其他人来说,如果 PDF 使用名为 "Frodo" 的过滤器加密,那么它将是
CreateDelegate frodo_del = new CreateDelegate(FrodoSecurityHandler.Create);
SecurityManagerSingleton.Instance().RegisterSecurityHandler("Frodo", new SecurityDescriptor("Frodo Security", frodo_del));