我需要从文件系统打开pdf文件。 我知道如何获取文件的路径,但我的IPhone无法打开它。
我使用以下代码渲染器:
using Xamarin.Forms;
using IdokladX.Services;
using UIKit;
using Foundation;
[assembly: Dependency(typeof(IdokladX.iOS.Services.PdfViewer))]
namespace IdokladX.iOS.Services {
public class PdfViewer:IPdfViewer {
public void OpenPdf(string filename)
{
FileWorker fl = new FileWorker();
if (fl.Exists(filename))
{
string strPfad = fl.GetFilePath(filename);
var viewer = UIDocumentInteractionController.FromUrl(NSUrl.FromFilename(strPfad));
var controller = GetVisibleViewController();
viewer.PresentOpenInMenu(controller.View.Frame, controller.View, true);
}
}
private UIViewController GetVisibleViewController(UIViewController controller = null)
{
controller = controller ?? UIApplication.SharedApplication.KeyWindow.RootViewController;
if (controller.PresentedViewController == null)
return controller;
if (controller.PresentedViewController is UINavigationController)
{
return ((UINavigationController)controller.PresentedViewController).VisibleViewController;
}
if (controller.PresentedViewController is UITabBarController)
{
return ((UITabBarController)controller.PresentedViewController).SelectedViewController;
}
return GetVisibleViewController(controller.PresentedViewController);
}
}
}
此处FileWorker
是一个类,其中包含保存/删除/检查文件的方法(如果存在)。
怎么了?我还在Info.plist文件中添加了文件类型PDF。
有什么问题?不建议我使用WebView,我需要通过另一个程序打开pdf文件。
答案 0 :(得分:1)
<强>参考:强>
请参阅presentOpenInMenu(from:in:animated:)的文档:
如果没有支持打开文档的注册应用程序,则文档交互控制器不会显示菜单。
<强>解决方案:强>
测试设备上的“打开方式...”和确保某些应用可以打开pdf文件(例如iBooks,Notes,Chrome等)。否则,菜单将不会显示。
<强>注意:强>
如果您只是需要其他应用来打开您的文件,则无需为PDF添加Document Type
。 Document Type
用于在“打开方式...”菜单中显示您的应用,以便在其他应用触发presentOpenInMenu
时打开其他应用的文件。