【问题标题】:open PDF with PDFKit.PDFView on iOS在 iOS 上使用 PDFKit.PDFView 打开 PDF
【发布时间】: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。 那么,谁能帮帮我?

【问题讨论】:

    标签: ios pdf xamarin.ios ios-pdfkit


    【解决方案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/…
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2019-05-26
    • 2011-02-19
    • 1970-01-01
    • 2016-09-07
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多