在 iOS 上使用 PDFKit.PDFView 打开 PDF
Posted
技术标签:
【中文标题】在 iOS 上使用 PDFKit.PDFView 打开 PDF【英文标题】:open PDF with PDFKit.PDFView on iOS 【发布时间】:2020-05-04 19:38:52 【问题描述】:我有一个带有 PDF 查看器的应用程序,我尝试使用需要 PDFKit.PDFDocument
对象的 PDFKit.PDFView
。
我的代码是:
var pdfview = new PdfKit.PdfView();
var path = NSBundle.MainBundle.PathForResource("Harvard", "pdf");
var urll = new NSUrl(path);
var pdfdoc = new PdfDocument(urll);
pdfview.Document = pdfdoc;
我在第 4 行得到一个异常,上面写着:
无法初始化“PdfKit.PdfDocument”类型的实例: 原生 'initWithURL:' 方法返回 nil
我的 pdf 文件,Harvard.pdf,位于 Resources 文件夹和具有 BundleResource 构建操作的直接 ios 项目目录中。
这个PDF文件可以用CGPDFDocument
轻松阅读,但我需要用PDFView
来解决我之前问过的问题
handle links clicking inside PDF viewer on iOS with swift。
那么,谁能帮帮我?
【问题讨论】:
【参考方案1】:试试看URL
是否返回nil
:
var documentURL = NSBundle.MainBundle.GetUrlForResource("Harvard", "pdf");
var pdfdoc = new PdfDocument(documentURL);
这是完整的示例代码:
var documentURL = NSBundle.MainBundle.GetUrlForResource("MyForm", "pdf");
if (documentURL != null)
var document = new PdfDocument(documentURL);
//var page = document.GetPage(0);
var pdfview = new PdfKit.PdfView();
pdfview.Frame = View.Frame;
pdfview.Document = document;
pdfview.AutoScales = true;
pdfview.UserInteractionEnabled = true;
pdfview.BackgroundColor = UIColor.Gray;
View.AddSubview(pdfview);
及效果:
【讨论】:
好吧,它工作正常。但我有一个问题,当我调试时看到 NSBundle.MainBundle.PathForResource 和 NSBundle.MainBundle.GetUrlForResource 之间的区别,它是第二个返回“文件:///”在 URL 的开头。现在我需要你的帮助才能从设备存储中打开 PDF,如果你能帮助我,模拟器中的 URL 是“/Users/haykalmedia/Library/Developer/CoreSimulator/Devices/DA58EBD1-0328-409A-8F95-63E3FFAE456F/data/ Containers/Data/Application/1E65FD74-8080-4FE6-BF30-554B6E11424D/Documents/Harvard_26_M-1.pdf”,我尝试在其开头添加“file:///”,但它不起作用。 @LofiMAM 如果在路径字符串之前添加file://
,它将与GetUrlForResource
一样工作。我想你在这里再添加一个 /
。在路径字符串的开头,有一个 /
存在。所以删除额外的 /
,它会起作用:)
非常感谢,我知道并尝试了,但不幸的是它不起作用,所以我使用了 var data = new NSData(url); var document = new PDFDocument(data);它工作正常。谢谢你,你救了我。
资源路径和存储路径之间存在差异(我的实际文件在存储中而不是在资源中,这意味着我不需要资源路径)。
@LofiMAM 是的,它们是不同的。你可以看看这个关于 iOS 路径的文档。docs.microsoft.com/en-us/xamarin/ios/app-fundamentals/…以上是关于在 iOS 上使用 PDFKit.PDFView 打开 PDF的主要内容,如果未能解决你的问题,请参考以下文章
使用 IOS9 时,无法在 UITable 的部分标题上的 UIButtons 上触发触摸事件(IOS10 很好)
无法在 iOS 8 上使用 Google 登录 iOS SDK