Можно ли использовать форму xamarin для просмотра PDF-файла без использования настраиваемого средства визуализации.Как просмотреть PDF-файл с использованием форм Xamarin
ответ
Android:
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
Существует теперь рецепт покрытия это: https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/controls/display-pdf/
Изменить: К сожалению, в рецепте используются Custom Renderers. Это может быть полезно, если вы не можете заставить его работать без Custom Renderer.
- 1. DidReceiveMemoryWarning в IOS с использованием форм Xamarin
- 2. Подключение к серверу с использованием форм xamarin
- 3. Широта и долгота с использованием форм Xamarin
- 4. Динамическая диаграмма с использованием форм Xamarin
- 5. EventToCommand с использованием форм Mvvmlight и xamarin
- 6. Android-виджет с использованием форм Xamarin?
- 7. Как загрузить фотографию в webservice с использованием форм Xamarin
- 8. Как установить BoxView относительно другого BoxView с использованием форм Xamarin
- 9. Как нарисовать спидометр или круговую диаграмму с использованием форм xamarin
- 10. Проблемы с (форм Xamarin) Сетка
- 11. Перетаскивание с помощью форм Xamarin?
- 12. Внедрение приложения с мертвым расчетом с использованием форм Xamarin
- 13. Локализация форм Xamarin
- 14. Xamarin коллекции ИОС просмотреть
- 15. Аутентификация Active Directory Active Directory с использованием форм PCL Xamarin
- 16. Получить свойства устройства с помощью форм Xamarin?
- 17. Создание приложения OS2 для часов с использованием форм Xamarin
- 18. ListView не оказывает правильного использования с использованием форм Xamarin
- 19. Событие OnScroll в ListView с использованием форм Xamarin
- 20. Создайте накладной загрузчик в мобильном приложении с использованием форм xamarin
- 21. Исключение на странице навигации в C# с использованием форм Xamarin
- 22. Переходная анимация для Android с использованием форм Xamarin
- 23. Xamarin Android, Xamarin Изменение ориентации форм
- 24. Задержка форм Xamarin в навигации
- 25. Закрытие форм Xamarin Навигационный ящик
- 26. Xamarin форм проблемы с SQLite и ждать
- 27. System.XML в формах форм XAMARIN
- 28. Как включить просмотр в NavigationBar форм Xamarin?
- 29. Редактирование изображений для форм Xamarin
- 30. Xamarin - смешивание форм и раскадровки
Попробуйте 'Device.OpenUri()' и перейдите в локальный URI PDF. Это должно открыть PDF в браузере, который (надеюсь) способен его просматривать. – Krumelur
Я попытался 'Device.OpenUri()' раньше, и он работает –
Спасибо за ваше предложение, но мое приложение должно открыть PDF-файл внутри приложения, а не в браузере. – Sonu