【问题标题】:Open NSData (PDF content) in UIWebview which is stored in Sqlite在存储在 Sqlite 中的 UIWebview 中打开 NSData(PDF 内容)
【发布时间】:2012-04-02 15:14:06
【问题描述】:

我想在 webview 中打开 pdf 文件,但这里的情况不同,我已将 pdf 内容作为 NSData 保存到 sqlite 表(blob 数据类型)中,当我将数据插入 sqlite 表时我成功了,但是一旦我获取将 blob 内容放入 NSData 并尝试将该数据打开到 WebView 中,这给了我错误 - 未能找到 PDF 标题:找不到“%PDF”。
我正在使用 webview 的 loadData 方法来加载数据

[webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
我做了很多搜索,还解决了其他堆栈溢出问题,但没有找到足够的答案。

谢谢,
马尤尔

【问题讨论】:

  • 您好,我在将 NSData 转换为 PDF 文件时遇到了同样的问题。如果您可以发布您的解决方案代码,将会有所帮助。

标签: iphone objective-c ios


【解决方案1】:

任何 PDF 文件的前四个字节都是%PDF。这告诉您,当您尝试显示数据时,它不是 PDF 文件(或者如果是,则开头已被切断)。

要么将损坏的数据放入 SQLite 数据库,要么在取出数据时损坏它。通过使用命令行工具查看数据库中的数据,应该很容易确认一种或另一种方式。

【讨论】:

  • 谢谢,我在将数据插入数据库时​​出错了,当我传递具有 char 指针数据类型的数据字节时它可以工作!
  • 我会建议其他用户使用 FBDatabase 框架-gusmueller.com/blog/archives/2005/3/22.html,您可以在这里获取框架-github.com/ccgus/fmdb
  • [FMDatabase executeUpdate:@"插入 DataTest 值 (?)",data, nil];完成了这项工作。
【解决方案2】:

您是否尝试过将转换的 NSData 转储为 NSString,然后将其转储到控制台? PDF文件必须以“%PDF-1.2......”开头,你必须确保来自sqlite的blob数据是完整的pdf内容。

【讨论】:

    【解决方案3】:

    如果您要从 webview 打开要打印的文件,您希望使用 UIPrintViewFormatter 的方法“viewPrintFormatter”将您的 webview 分配给格式化程序。然后,您将 UIPrintViewFormatter 的实例添加到 UIPrintInteractionController 的实例中。

    这是一个如何使用 UIPrintViewFormatter 的示例:

     UIViewPrintFormatter *viewPrintFormatter = [self.contentWebView  viewPrintFormatter];
    [printInteractionController setPrintFormatter:viewPrintFormatter];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多