在iOS创建PDF文件中简单介绍了如何生成pdf文件。现在有需求要显示PDF文档。看了一下Apple的API,大概有两种方法:
使用WebView,可以直接读取PDF,这个比较简单,可参见:最简单的WebView应用,缺点是自定义的能力较弱,优点是简单,像读取网页一样;
使用自定义的UIView,需要继承UIView,自定义效果很好,问题是需要了解和使用的API较多。
本文只说明自定义UIView的方法。实现的在iPad模拟器上的效果:
本文方法参考了:官方文档。见A function that draw a PDF page的代码部分:
void MyDisplayPDFPage (CGContextRef myContext,
size_t pageNumber,
const char *filename)
{
CGPDFDocumentRef document;
CGPDFPageRef page;
CGRect box;
document = MyGetPDFDocumentRef (filename);// 1
page = CGPDFDocumentGetPage (document, pageNumber);// 2
CGContextDrawPDFPage (myContext, page);// 3
CGPDFDocumentRelease (document);// 4
}
在开发微信小程序时,实现文件预览功能是常见的需求,尤其是对于PDF文件。起初,由于被一篇关于iOS预览PDF文件需要用到webview的博客误导,对安卓系统和iOS系统处理文件预览的方式产生了误解。在探究过程中,发现安卓和iOS系统预览文件时,可以直接使用wx.downloadFile()和wx.openDocument()这两个API,而无需依赖webview。
具体来说,wx.downloadFile()用于下载指定URL的文件,并将其保存到本地。其属性包括url(文件下载的URL),header(HTTP请求Header,不包含Referer),filePath(下载后文件的保存路径),以及success、fail和complete回调函数,分别对应接口调用成功、失败和结束的处理逻辑。
而wx.openDocument()用于打开本地文件。它需要filePath属性,即通过downloadFile获取的文件路径,以及可选的fileType属性,用于指定文件类型以进行特定处理。wx.openDocument()支持的文件格式包括doc、docx、xls、xlsx、ppt、pptx和pdf。其回调函数同样支持成功、失败和结束的逻辑处理。
在实际应用中,开发者只需调用wx.downloadFile()下载文件至本地,然后利用wx.openDocument()根据文件类型进行预览或打开操作,无需额外配置或复杂逻辑。这一过程简化了文件预览的实现,提高了开发效率。
在写本文时,注意到一些开发者可能仍受误导,认为iOS系统预览文件需要使用webview。但事实是,无论是安卓还是iOS系统,直接使用wx.downloadFile()和wx.openDocument()即可实现文件预览,无需额外步骤。因此,建议开发者在开发过程中直接使用这两个API,避免不必要的误解。
综上所述,wx.downloadFile()和wx.openDocument()是微信小程序中实现文件预览功能的强大工具,它们简化了文件处理流程,适用于多种文件类型,包括PDF文件。在实际应用中,开发者只需遵循相应的API调用规范,即可轻松实现文件的下载与预览功能。
Ⅲ iOS开发 读取 沙盒中的pdf文件 CGPDFDocumentCreateWithURL(url) 返回为空, 有这方面经验的朋友帮帮。
CFURLRef pdfURL = (CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:source]);
CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);
或者
NSURL * url = [NSURL URLWithString:self.fileName];
CFURLRef pdfURL = (__bridge CFURLRef _Nonnull)url;
CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL(pdfURL);