【问题标题】:Open password protected PDF file without asking for password in iOS在 iOS 中无需输入密码即可打开受密码保护的 PDF 文件
【发布时间】:2014-03-24 07:00:23
【问题描述】:

在我的一个 iPad 应用程序中,我创建了 PDF 报告并在 Web 视图中显示它,用户可以将该报告通过电子邮件发送给客户。以下代码用于创建报告。

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"owner", kCGPDFContextOwnerPassword, @"user", kCGPDFContextUserPassword, kCFBooleanFalse, kCGPDFContextAllowsCopying, kCFBooleanFalse, kCGPDFContextAllowsPrinting,  nil];
UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, dictionary);

密码保护对我来说很好用。

但我们的要求是,当用户在应用程序的 Web 视图中打开该 PDF 文件时,它不应该要求输入密码。只有当用户将该 PDF 文件通过电子邮件发送给客户并且该客户尝试查看它时,它才会要求输入密码。

所以我想知道是否有任何选项,以便当用户在 Web 视图中查看 PDF 文件时,我们可以通过在应用程序内以编程方式提供密码来打开 PDF 文件。

提前致谢!!

【问题讨论】:

    标签: ios iphone objective-c pdf


    【解决方案1】:

    编辑:你cannotopenpassword protectedPDFUIWebView,除非你unlock它。

    解决办法是先unlock使用CGPDFDocumentUnlockWithPassword

     CGPDFDocumentUnlockWithPassword(doc, pass).
    

    然后您可以在memoryload 中生成unlocked version 作为NSDataweb view(此时不受密码保护)。

    【讨论】:

    • 在我的应用程序中,我可以在 UIWebview 中打开受密码保护的文件。我尝试了您的解决方案,但不知道如何将 CGPDFDocumentRef 转换为 NSData。
    【解决方案2】:

    我终于解决了这个问题,并使用滚动视图和视图创建了自己的 pdf 查看器。

    我首先解锁了 PDF 视图,然后使用以下 url 的引用显示了该 pdf 视图:

    http://www.cocoanetics.com/2010/06/rendering-pdf-is-easier-than-you-thought/

    然后将放大/缩小分配给滚动视图。它对我来说工作正常。

    【讨论】:

      【解决方案3】:

      如果你想要的话,你可以从创建 CGPDFDocumentRef 的 CFURL 中创建一个 NSData 对象:

      let url = yourCFURL as NSURL
      let data = NSData(contentsOfUrl: url)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        • 2021-03-28
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        • 2011-12-23
        相关资源
        最近更新 更多