How to show PDF from NSData in Swift - 如何将 PDF 保存到文档文件夹 Swift - 如何在 Swift 中通过 WebView 显示保存的 NSData 中的 PDF

2024-01-27

我有一个以 NSData 形式从服务器中提取的 PDF,现在我需要显示它。我已经广泛寻找解决方案,但没有找到任何可以弥合原始 NSData 和实际保存或显示 PDF 之间差距的东西。

我尝试过这个,但现在我不知道如何保存或显示:

let cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data.bytes), data.length)                                                
let cgDataProvider = CGDataProviderCreateWithCFData(cfData)
let cgPDFDocument = CGPDFDocumentCreateWithProvider(cgDataProvider)

首先,NSDataIS您的 PDF,目前无需转换为其他数据类型或使用库来操作它。

现在,只需将 NSData 保存到 iOS 上的文档目录中,它不是像 CoreData 或 Realm 这样的托管持久存储,也不是 UserDefaults。这是一个文件夹,里面有东西。

保存到文档文件夹:

let data = //the stuff from your web request or other method of getting pdf    
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let filePath = "\(documentsPath)/myCoolPDF.pdf"
data.writeToFile(filePath, atomically: true)

现在验证该文件是否存在并在您的 Mac 上打开它。这是为了确保您保存的是实际的 PDF,而不是其他任何内容。这是一个两步过程。首先通过从 iOS 模拟器打印文档文件夹的位置来找出文件到底去了哪里:

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0]
print(documentsDirectory)

现在复制那个很长的文件路径并cd [paste location]在航站楼去那里,然后open myCoolPDF.pdf在预览中打开它!这是神奇的时代!

现在您已经确认您正在处理一个实际的 PDF,是时候在 WebView 中显示它了,因为它非常简单,除非您有自己的方法。

请注意,您仍然需要使 Web 视图显示出来,将其拖到 Storyboard 中的 viewController 上并为其创建一个 IBOutlet。

let url = NSURL(fileURLWithPath: filePath)
let webView = UIWebView()
webView.loadRequest(NSURLRequest(URL: url))

显然,这是确保您掌握基础知识的快速方法,您不想使用不安全的方式强制展开!.

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

How to show PDF from NSData in Swift - 如何将 PDF 保存到文档文件夹 Swift - 如何在 Swift 中通过 WebView 显示保存的 NSData 中的 PDF 的相关文章

  • “StorageReference”类型的值没有成员“put”[重复]

    这个问题在这里已经有答案了 我更新到 firebase storage 4 0 现在收到此错误 指出 storageRef 没有成员 put 它以前在旧版本的 Firebase 中有效 if let selectedImage select
  • 以编程方式快速呈现视图控制器

    您好 我正在尝试将以下目标 C 代码转换为 swift 以便在单击按钮时从一个视图控制器导航到另一个视图控制器 任何帮助将非常感激 这是摘自苹果的编程指南 void add id sender Create the root view co
  • UITableView 干扰状态栏

    我正在开发一个具有 UITableViewController 的应用程序 该应用程序显示值列表 如下所示 如何将表格向下移动 使其不会与状态栏冲突 看来我无法对这个场景施加任何限制 所以我不知所措 使用以下 3 个属性UIViewCont
  • 从 Windows 命令行打印 PDF

    我正在尝试打印当前目录中的所有 pdf 文件 当我在 cmd 中调用这个 bash 脚本时 singlepdf sh C Program Files x86 Adobe Reader 10 0 Reader AcroRd32 exe t G
  • 重置 ARKit 坐标

    我有一个简单的问题 如果我想开始游戏并将棋盘放在我面前 gameBoard position SCNVector3 0 0 0 6 这一直有效 直到我离开游戏并再次回来为止 我可以在镜头前将游戏板展示在完全相同的位置吗 0 6m在我前面 我
  • Swift:在标签背景中制作图像

    我想将标签放入带有角半径的红色矩形的图像中 条件是图像大小必须等于或略大于标签大小 为此我找到了一个类似的question https stackoverflow com questions 3037902 adding backgroun
  • Health 处理多个步骤源的方式与 HealthKit 不同——swift

    我的 Swift iOS 应用程序与 HealthKit 连接 向用户显示他们当天到目前为止已经走了多少步 在大多数情况下 这是成功的 当步数的唯一来源是 iPhone 内置计步器功能记录的步数时 一切正常 并且我的应用程序显示的步数与健康
  • 如何从 UITableViewController 中的静态单元格获取文本字段?迅速

    我的视图层次结构如下所示 UIViewController 类型的 ElevethViewController容器视图嵌入容器视图中的 UITableViewController 类型的 ManagedTableEleventhViewCo
  • 扩展功能截图未捕获 iPhone 和 iPad 中的同一区域

    我正在使用扩展函数来截取 uiview 的屏幕截图 问题是结果看起来非常不同 我希望无论使用 ipad 还是 iphone 照片看起来都一样 我手动输入约束 因此我希望图像是相同的 我想使用该函数转到视图控制器的原点或中心 高度为 200
  • 隐藏标签栏并删除空格

    有没有办法隐藏选项卡栏并删除剩余的空间 大约 50px I tried self tabBarController tabBar hidden true self extendedLayoutIncludesOpaqueBars true
  • Swift 中带有数组的 For-In 循环中迭代器元素的可变性

    我在 Swift 3 0 中有一些代码 就像这样尝试更新元素数组中的属性 for point in listOfPoints var pointInFrame Float Float point position x sensorIncom
  • 如何使用 iTextSharp 拼合 XFA PDF 表单?

    我假设我需要展平 XFA 表单 以便在使用 Nuance 的 CSDK 的应用程序的 UI 上正确显示 当我现在处理它时 我收到一条通用消息 请等待 如果该消息最终没有被替换 正在寻找一些示例 iTextSharp 代码来执行此操作 您没有
  • UICollectionView 快速粘性标题

    我正在尝试创建一个粘性补充标题 它始终保持在顶部并且不会响应滚动事件 到目前为止 我发现的解决方案仍然对弹跳滚动做出反应 并使用自定义 flowLayout 进行修复 这也可能是我的问题的修复 我想要这种方式的原因是标头在其他地方使用并且应
  • 使用 Swift 导入 aurioTouch 库

    我正在尝试将 Objective C 应用程序转换为 swift 我想导入课程奥里奥触摸 https developer apple com library ios samplecode aurioTouch Introduction In
  • 按钮图像未显示在 UItextfield 的 rightView 中

    我创建了一个按钮图像 并使用 Sa wift 将其放置在 UITextField 密码 的 rightView 上 我想在密码字段中创建切换按钮隐藏 显示安全文本 右视图中显示的图像 Code func passwordToggleButt
  • 无法从 PDFA1-a 格式文档中提取图像

    我正在使用以下代码从 PDFA1 a 格式的 pdf 中提取图像 但我无法获取图像 List
  • 是否可以快速读取权利文件

    我正在我的应用程序中实现通用深度链接 当我注册不同的域时 它会创建一个 AppName entitlements 文件 我想像 plist 一样读取这个文件的值 I tried if let path NSBundle mainBundle
  • Swift 3 Web 视图

    所以我刚刚更新到新的Xcode8 and Swift3但现在我的网络视图不起作用 这是我使用的代码 UIWebView loadRequest webView NSURLRequest URL NSURL string http hardw
  • 关于 Swift 中重写类属性的困惑

    我已阅读 Swift 文档并在这里搜索 但我仍然不确定如何实现类层次结构 其中每个子类为继承的静态属性设置自定义值 那是 基类定义了一个静态属性 所有实例共享相同的值 子类覆盖静态属性 所有实例共享相同的值 这与基类不同 财产可以储存吗 另
  • NumberFormatter 分组未按预期工作

    在进行货币格式化工作时 我在尝试格式化智利比索时发现了一个问题 按照此代码 let priceFormatter NumberFormatter priceFormatter locale Locale identifier es CL p

随机推荐