【问题标题】:Why doesn't this generic code which works for displaying a PDF in iOS, but not in Android?为什么这个通用代码不适用于在 iOS 中显示 PDF 而不是在 Android 中?
【发布时间】:2019-06-15 22:39:46
【问题描述】:

在下面的代码中,我将一个 PDF 文件写入 App Data Directory 并在 Xamarin WebView 中打开它。这在 iOS 中运行良好,但在 Android 中没有任何显示。为什么这适用于 iOS 而不是 Android?

我也尝试将它保存到不同的位置,例如 CacheDirectory。

   public DocumentViewer(JaxrsGetDocumentResults doc)
    {
        InitializeComponent();

        string directory = FileSystem.AppDataDirectory;
        var file = Path.Combine(directory, doc.FileName);

        if (!File.Exists(file))
        {
            File.WriteAllBytes(file, doc.FileBytes);
        }
        wv.Source = new Uri("file://" + file);

    }

我认为这在 Android 中也是如此,因为 Android 可以在其网络浏览器中加载 PDF。换句话说,我可以在 Android 模拟器中打开 Chrome 并导航到 PDF 网址并加载它。请参见下面的示例:

【问题讨论】:

  • “Android 可以在其网络浏览器中加载 PDF [需要引用]”。
  • 我没有引用,但如果我在 Visual Studio 附带的模拟器中打开 Chrome 并导航到 Web 上的 PDF,它就会打开。
  • 我不认为这适用于所有版本的 Android 或所有设备制造商

标签: xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

WebView控件在iOS平台上可以显示PDF文件,但在Android和Windows Phone平台上由于缺乏平台支持而无法显示。在 Android 和 Windows Phone 平台上,可以使用 Mozilla 的 pdf.js 来添加此支持。 pdf.js 是一个 JavaScript 库,用于使用 HTML5 画布元素解析和呈现 PDF。

因此,在 Android 上,您必须创建自定义渲染器并使用类似 pdf.js 的方式在 Web 视图中显示 PDF。

Here 是有关如何实现这一目标的官方文档和教程。

【讨论】:

  • 感谢这让我走得更远,但如果我下载官方教程并在 Android 模拟器上运行它,PDF 会变灰并且不显示图像。有什么想法吗?
  • 我接受这个作为答案,因为它是官方的答案 - 尽管我认为它需要更新,因为它不能完全在 Android 上运行。
  • 嗨斯蒂芬,你遇到了什么问题?
  • 当我下载示例并在 Android 模拟器中运行它时,PDF 显示为“灰色”并且图像不显示。
  • 您是从外部源加载,还是直接从项目加载?
猜你喜欢
  • 1970-01-01
  • 2020-11-13
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
相关资源
最近更新 更多