iphone – 如何让QuickLook显示脱机文件?

iphone – 如何让QuickLook显示脱机文件?,第1张

概述我们的iPad应用程序可以显示文档并在需要时将其保存在线下 我有一个名为DocumentViewController的QLPreviewController子类(从现在起名为DVC)来显示它们. 应用程序的工作流程: – 用户单击文档的名称并按下DVC以显示文档. – DVC离线下载文件并在完成后显示.   (因此,下载HTTP URL,脱机存储,并返回脱机URL) 奇怪的是,只有PDF文件正在使 我们的iPad应用程序可以显示文档并在需要时将其保存在线下
我有一个名为documentVIEwController的QLPrevIEwController子类(从现在起名为DVC)来显示它们.

应用程序的工作流程:
– 用户单击文档的名称并按下DVC以显示文档.
– DVC离线下载文件并在完成后显示.
  (因此,下载http URL,脱机存储,并返回脱机URL)

奇怪的是,只有pdf文件正在使用脱机URL,其余的崩溃..(虽然它适用于在线链接)

我做了一些测试,当我在离线链接之前放置file://应用程序没有崩溃但是DVC正在向我提供有关该文件的一些信息(就像它是一个excel 97-2004文档).

所以一些信息被转移,但我无法弄清楚问题是什么.

这里有一些截图,然后是一些代码.

码:
请注意,document是一个模型类,其文档属性包括ID,name,file type和url.

//DVC QLPrevIEwController dataSource method for returning url- (ID <QLPrevIEwItem>) prevIEwController: (QLPrevIEwController *) controller prevIEwItemAtIndex: (NSInteger)index{    [SaveHelper savedocumentfileAndPropertyWithdocument:document];    //[SaveHelper getdocumentfileWithdocument:document]; without file://    //if I return document.documentUrl it is working with all files except iworks files)    return [SaveHelper getdocumentfileAsPathWithdocument:document]; //with file://}//SaveHelper methods+ (Nsstring *)documentfilePathWithdocument:(document *)document{    return [[self documentfilePath] stringByAppendingPathComponent:[Nsstring stringWithFormat:@"%@%d.%@",document_file_PREFIX,document.documentID,document.documentType]];}+ (NSURL *)savedocumentfileAndPropertyWithdocument:(document *)document{    if([self savedocumentPropertyWithdocument:document])    {        return [self savedocumentfileWithdocument:document];    }    return nil;}+ (NSURL *)savedocumentfileWithdocument:(document *)document{    NSData *data = [NSData dataWithContentsOfURL:document.documentURL];    Nsstring *fullPath = [self documentfilePathWithdocument:document];   if([[NSKeyedArchiver archivedDataWithRootObject:data] writetofile:fullPath atomically:YES])   {       return [NSURL fileURLWithPath:fullPath];   }    return nil;}+ (NSURL *)getdocumentfileWithdocument:(document *)document{    return [NSURL fileURLWithPath:[self documentfilePathWithdocument:document]];}+ (NSURL *)getdocumentfileAsPathWithdocument:(document *)document{    return [NSURL fileURLWithPath:[@"file://" stringByAppendingPathComponent:[[self getdocumentfileWithdocument:document] absoluteString]]];}

如果需要更多代码,请说.

编辑:

记录通过’getdocumentfileAsPathWithdocument’方法传递的URL时:

url: file:/var/mobile/Applications/xx-xx/documents/documentfiles/file_20.pdfurl: file:/var/mobile/Applications/xx-xx/documents/documentfiles/file_80.docx

pdf文件正在工作而docx没有

当我尝试从本地存储加载图像(jpg)时,我得到一个带有此错误消息的黑屏:

warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.5 (8L1)/Symbols/System/library/Frameworks/QuickLook.framework/displayBundles/Image.qldisplay/Image (file not found).warning: No copy of Image.qldisplay/Image found locally,reading from memory on remote device.  This may slow down the deBUG session.

编辑:

webvIEw无法使用本地网址. pdf很好,但office文件给出了一条消息“无法读取文档,文件格式无效”. iWorks文档提供与quicklook相同的错误.我认为它在格式的保存和加载的某个地方,我把它们作为NSDATA使用但是之后没有提示iPad看它是否是例如word文档(只有扩展名).

解决方法 您尚未发布下载代码,但我相信问题就在那里.来自Pages(.pages扩展名)的文件不是实际文件,它们是捆绑包,即包含文件并在Finder中显示为单个项目的目录(在Finder中查找.pages文件,右键单击它并选择’显示内容“).下载.pages文件实际上就像下载一个目录:它取决于Web服务器你获得了什么样的结果,但它很可能是一个错误页面.

您可以检测到它是.pages文件并尝试手动下载其所有内容,但您必须研究文件的结构以查看是否可能,因为您不太可能从请求目录的内容网络服务器.

.ppt和.xls文件的结果对我来说是正常的;我认为iPad根本不可能预览MS Office文档.

编辑:道歉,我刚看到iOS可以预览MS Office文档.在下载过程中,文档可能会以某种方式损坏?您是否尝试将下载位置设置为应用程序的文档文件夹并启用iTunes文件共享?这样你就可以下载一些文件,将它们从你的设备中取出然后尝试在你的PC上打开它,看看它是否有效.

总结

以上是内存溢出为你收集整理的iphone – 如何让QuickLook显示脱机文件?全部内容,希望文章能够帮你解决iphone – 如何让QuickLook显示脱机文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1080624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存