gpt4 book ai didi

xamarin - 如何在 Xamarin 表单中加载 PDF

转载 作者:行者123 更新时间:2023-12-04 05:38:31 24 4
gpt4 key购买 nike

我有一个 Xamarin Forms 应用程序,我想在其中打开本地存储的 PDF。我不需要在应用程序中加载它们,我可以使用设备的默认文档查看器来查看 PDF。我怎样才能做到这一点?

我尝试将 WebView 发送到 PDF,但这不起作用,我只是得到一个空白页。

最佳答案

我最近在我自己的项目中使用自定义渲染器完成了这项工作。首先实现一个空的 Xamarin 表单 View ,例如(我已经包含了一个可绑定(bind)的 FilePath 属性):

    public class PdfViewer : View
{
public static readonly BindableProperty FilePathProperty =
BindableProperty.Create<DocumentViewer, string>(p => p.FilePath, null);

public string FilePath
{
get
{
return (string)this.GetValue(FilePathProperty);
}

set
{
this.SetValue(FilePathProperty, value);
}
}
}

然后创建一个将为此控件注册的 iOS 渲染器。该渲染器可以在 iOS 项目中使用 Quick Look Preview Controller委托(delegate)给内置的 iOS pdf 查看器:
[assembly: ExportRenderer(typeof(PdfViewer), typeof(DocumentViewRenderer))]

public class DocumentViewRenderer
: ViewRenderer<PdfViewer, UIView>
{
private QLPreviewController controller;

protected override void OnElementChanged(ElementChangedEventArgs<DocumentViewer> e)
{
base.OnElementChanged(e);

this.controller = new QLPreviewController();
this.controller.DataSource = new DocumentQLPreviewControllerDataSource(e.NewElement.FilePath);

SetNativeControl(this.controller.View);
}

private class DocumentQLPreviewControllerDataSource : QLPreviewControllerDataSource
{
private string fileName;
public DocumentQLPreviewControllerDataSource(string fileName)
{
this.fileName = fileName;
}

public override int PreviewItemCount(QLPreviewController controller)
{
return 1;
}

public override QLPreviewItem GetPreviewItem(QLPreviewController controller, int index)
{
var documents = NSBundle.MainBundle.BundlePath;
var library = Path.Combine(documents, this.fileName);
NSUrl url = NSUrl.FromFilename(library);

return new QlItem(string.Empty, url);
}

private class QlItem : QLPreviewItem
{
public QlItem(string title, NSUrl uri)
{
this.ItemTitle = title;
this.ItemUrl = uri;
}

public override string ItemTitle { get; private set; }

public override NSUrl ItemUrl { get; private set; }
}
}
}

我没有编译和运行它,因为我已经从我的较大项目中提取了它,但总的来说这应该可以工作。

关于xamarin - 如何在 Xamarin 表单中加载 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com