有沒有什麼方法可以使用xamarin表單查看PDF文件而不使用自定義渲染器。如何使用Xamarin Forms查看PDF文件
3
A
回答
5
安卓
public void OpenPdf(string filePath)
{
Android.Net.Uri uri = Android.Net.Uri.Parse("file:///" + filePath);
Intent intent = new Intent(Intent.ActionView);
intent.SetDataAndType(uri, "application/pdf");
intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask);
try
{
Xamarin.Forms.Forms.Context.StartActivity(intent);
}
catch (Exception)
{
Toast.MakeText(Xamarin.Forms.Forms.Context, "No Application Available to View PDF", ToastLength.Short).Show();
}
}
的iOS,有點更加複雜和requiries一些額外的課程:
public void OpenPDF(string filePath)
{
FileInfo fi = new FileInfo(filePath);
QLPreviewController previewController = new QLPreviewController();
previewController.DataSource = new PDFPreviewControllerDataSource(fi.FullName, fi.Name);
UINavigationController controller = FindNavigationController();
if (controller != null)
controller.PresentViewController(previewController, true, null);
}
private UINavigationController FindNavigationController()
{
foreach (var window in UIApplication.SharedApplication.Windows)
{
if (window.RootViewController.NavigationController != null)
return window.RootViewController.NavigationController;
else
{
UINavigationController val = CheckSubs(window.RootViewController.ChildViewControllers);
if (val != null)
return val;
}
}
return null;
}
private UINavigationController CheckSubs(UIViewController[] controllers)
{
foreach (var controller in controllers)
{
if (controller.NavigationController != null)
return controller.NavigationController;
else
{
UINavigationController val = CheckSubs(controller.ChildViewControllers);
if (val != null)
return val;
}
}
return null;
}
public class PDFItem : QLPreviewItem
{
string title;
string uri;
public PDFItem(string title, string uri)
{
this.title = title;
this.uri = uri;
}
public override string ItemTitle
{
get { return title; }
}
public override NSUrl ItemUrl
{
get { return NSUrl.FromFilename(uri); }
}
}
public class PDFPreviewControllerDataSource : QLPreviewControllerDataSource
{
string url = "";
string filename = "";
public PDFPreviewControllerDataSource(string url, string filename)
{
this.url = url;
this.filename = filename;
}
public override QLPreviewItem GetPreviewItem(QLPreviewController controller, int index)
{
return new PDFItem(filename, url);
}
public override int PreviewItemCount(QLPreviewController controller)
{
return 1;
}
}
使用依存服務,讓他們和呼叫根據需要,工作對我非常好。 PDFItem和PDFPreviewControllerDataSource類來自博客,我不能爲我的生活記住名字,但他們不是我的工作。該FindNavigationController可能沒有必要在你的情況下,它可能是簡單:
UISharedApplication.KeyWindow.PresentViewController
您可以在這裏找到的信息: https://forums.xamarin.com/discussion/25746/how-to-open-pdf-in-xamarin-forms
3
現在有覆蓋這個配方:https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/controls/display-pdf/
編輯:糟糕,配方使用自定義渲染器。如果沒有自定義渲染器,它可能仍然有用。
相關問題
- 1. 查看PDF文件
- 2. Xamarin(Forms):如何下載和使用SQLite數據庫文件
- 3. 如何在Xamarin Android中使用Syncfusion的PDF查看器打開PDF?
- 4. 如何在WordPress中查看.pdf文件?
- 5. 如何通過WPF查看PDF文件?
- 6. 如何在jsp中查看pdf文件
- 7. 如何在Xamarin Forms XLabs中使用INetwork?
- 8. Xamarin Forms Xamarin Android
- 9. 如何在pdf文件中打開pdf到pdf查看器
- 10. 如何在Android中使用itextpdf.jar查看PDF文件?
- 11. Xamarin Forms - Listview - 自動保存PDF
- 12. 使用Xamarin Forms的Android Widget?
- 13. 如何在pdf查看器中實現pdf.js來查看pdf文件?
- 14. 如何在使用mpdf時查看pdf?
- 15. 如何使用Java fx pdf查看器?
- 16. 如何使用IOS Pdf reader Api通過Url查看遠程pdf文件?
- 17. Jquery插件查看文件(JPEG,PDF,DOC)
- 18. 應用程序查看PDF文件
- 19. Xamarin iOS:如何使用默認閱讀器打開.pdf文件?
- 20. Xamarin Forms - 文件系統中的FileImageSource?
- 21. 在Xamarin Forms中創建Zip文件Android
- 22. Xamarin Android無法查看文件
- 23. Xamarin Forms,Prism Forms和IoC
- 24. Xamarin Forms使用Unity註冊客戶服務以查看模型構造函數
- 25. 在Android WebView中查看PDF文件
- 26. 如何使用asp.net禁用Firefox默認PDF查看器/插件?
- 27. Xamarin Forms ListView onpressing事件
- 28. 在java中查看pdf文件
- 29. Xamarin Forms Carousel查看丟失的選定值(Survey Sample)
- 30. 渲染,查看,註釋PDF文件
嘗試'Device.OpenUri()'並傳入PDF的本地URI。這應該在瀏覽器中打開PDF(希望)能夠查看它。 – Krumelur
我已經嘗試過'Device.OpenUri()',它的工作原理 –
感謝您的建議,但我的應用程序要求是在應用程序內部不打開瀏覽器中打開PDF文件。 – Sonu