首页 > 其他分享 >MASA MAUI 预览Office文件

MASA MAUI 预览Office文件

时间:2023-10-16 11:48:00浏览次数:42  
标签:文件 Office 预览 Api MAUI public MASA

目录

背景

接到一个在Maui中预览Office文件的需求,包含excel、word、PDF三种常见的文件,经过技术选型,最后选择了微软原生支持的office在线预览Api,原因是此技术方案简单、跨平台。在开发过程中碰到了不少问题,所以在此分享在MAUI中预览Offic文件的经验,也希望大家少踩坑。

介绍

微软提供了一个浏览器在线预览Office的Api:在线预览Office文件Api,拼接自己的office文件地址参数后在浏览器中访问即可达到预览效果。

https://view.officeapps.live.com/op/view.aspx?src=

image.png

接下来我们按照这个思路在Maui中实现这个效果。

1、新建MAUI Blazor项目

OfficeViewerDemo
企业微信截图_1696840312740.png

企业微信截图_16969010278681.png

2、创建OfficeViewer.razor组件

在Index.razor页面写上demo视图
企业微信截图_16969018241364.png

<iframe src="@($"https://view.officeapps.live.com/op/view.aspx?src={Url}")" frameborder="0" style="height:100vh;width:100%;" />

@code {
    [Parameter]
    [EditorRequired]
    public string Url { get; set; }
}

image.png

@page "/"

<OfficeViewer Url="@_url" />

@code{
    string _url = "your_excel_url";
}

3、使用安卓模拟器运行

image.png

看似大功告成了,满心欢喜,然而在尝试浏览word文件时发现异常,无法正常访问

企业微信截图_16969038169158.png

通过用浏览器模拟移动设备调试后,发现微软这个Api会检测设备,这个Api在移动端下不适用。经过在网络上一番查找,最后发现微软有一个移动端设备使用的Api:在线预览Office文件Api,我们将OfficeViewer.razor组件代码中的Api替换后运行

https://view.officeapps.live.com/op/embed.aspx?src==

企业微信截图_16969046046389.png

<iframe src="@($"https://view.officeapps.live.com/op/embed.aspx?src={Url}")" frameborder="0" style="height:100vh;width:100%;" />

@code {
    [Parameter]
    [EditorRequired]
    public string Url { get; set; }
}

一切似乎完美,然而现实很残酷,在打包给测试后,发现Iphone进入此页面会出现跳转浏览器的现象,在网上查阅资料后得知,这是苹果的安全策略,就是不允许App里直接使用iframe。最后尝试在webview中使用iframe,解决了此问题。

4、兼容iOS

关于MAUI WebView的内容请参考下面官方文档

https://learn.microsoft.com/zh-cn/dotnet/maui/user-interface/controls/webview?pivots=devices-ios

新建WebViewer.xaml文件,使用WebView组件

企业微信截图_16969086735360.png

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="OfficeViewrDemo.WebViewer"
             Title="WebViewer">
    <StackLayout>
        <WebView  x:Name="webView"  VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        </WebView>
    </StackLayout>
</ContentPage>

image-20231010113216729.png

namespace OfficeViewrDemo;

public partial class WebViewer : ContentPage
{
    public WebViewer()
    {
        InitializeComponent();
    }

    public void Open(string url)
    {
        this.webView.Source = url;
    }
}

修改OfficeViewer.razor组件代码

image-20231010113319754.png

@code {
    [Parameter]
    [EditorRequired]
    public string Url { get; set; }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            WebViewer webView = new WebViewer();
            webView.Open($"https://view.officeapps.live.com/op/embed.aspx?src={Url}");
            await Microsoft.Maui.Controls.Application.Current.MainPage.Navigation.PushModalAsync(webView);
        }
    }
}

如此这般就兼容解决了iOS。

总结

本文主要介绍了如何在Maui下预览Office文件,并分享开发过程正踩过的坑以及对应的解决方案。希望能帮助到遇到同样需求问题的朋友。

标签:文件,Office,预览,Api,MAUI,public,MASA
From: https://www.cnblogs.com/MASA/p/17766982.html

相关文章

  • .NET MAUI播放音频文件,复制资源文件到安装目录。
    .NETMAUI我基本都是参考Android代码改造来的,官方文档=废品。参考:https://blog.csdn.net/wxzjn1027/article/details/82345604需要注意的是,流的加载过程是一个将音频解压为原始16位PCM数据的过程,由一个后台线程来进行处理异步,所以初始化后不能立即播放,需要等待一点时间。有以下......
  • centos7.9 安装 openoffice
    1.环境信息centos7.9+openoffice4+jdk82.下载软件https://www.openoffice.org/zh-cn/选择linux版本的tar.gz3.将下载好的安装包通过ftp等工具,上传到服务器上 4.登录服务器,解压缩并安装#切换到上传的文件所在目录cd/d/resources/openoffice4_src#解压......
  • PageOffice6 版本常用事件
    1、AfterDocumentOpened事件打开文件后自动触发的事件是AfterDocumentOpened事件,它通常用于实现文件打开后自动执行某些业务逻辑,比如将默认控件全屏、禁止保存、另存、打印,或者显示或隐藏痕迹等。因此,所有需要在文件打开后自动触发的业务逻辑代码都可以放在此事件中执行。在实......
  • MAUI ABP 框架正式发布(.NET 7)
    介绍国内首个基于.NET7版本的MAUIABP框架正式发布!本套框架主要针对原.NET6版本的WPF/Xamarin.FormsABP框架升级。升级如下:.NET6版本升级至.NET7ABP7.3升级至ABP8.0Xamarin.Forms升级至MAUI.NET6版本的WPFABP现已升级至.NET7功能介绍与.NET6版本......
  • pageoffice多用户同时在线编辑word文档
    转载:多用户同时编辑多用户同时编辑注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。总体来说,各种Web系统中的Word文档在线处理大体可以分为以下四种流转处理方式:A用户编辑完,流转给B用户修改,再流转给C用户修改,直......
  • 免费安装微软官方正版OFFICE
    最近几年来,博主一直都是使用的正版的office的key,也就是基友们拼车合买一个家庭版的套装,毕竟一年就四五十元钱,两杯咖啡的钱,也没必要到处找破解浪费时间,况且破解版的也有安全问题。偶然有一个机会,发现有博主分享可以安装免费的、正版的office的方法,微软官方免费的正版office,值得拥有......
  • MAC Office 插件异常 Run-time error '53'
    问题描述:Office版本和Mathtype版本不兼容,卸载mathtype后,加载项无法加载出现如下报错:Filenotfound:/Library/ApplicationSupport/Microsoft/Office365/UserContent.localized/Startup.localized/PowerPoint/MathType.bundle/Contents/MacOS/MTMacOLEshim.解决方法问题处在......
  • Office三件套小技巧
    当谈到Office三件套(Word、Excel和PowerPoint)的小技巧时,以下是非常详细的内容,确保不错过任何小知识点。让我们逐个介绍:MicrosoftWord小技巧:快速格式化文本:使用Ctrl+B、Ctrl+I和Ctrl+U分别快速添加粗体、斜体和下划线格式。创建自定义标签页:在"文件"菜单中选择"选项",......
  • 泛微OA e-office平台uploadify.php任意文件上传漏洞
    0x01漏洞描述泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件,国内协同OA办公领域领导品牌,致力于为企业用户提供专业OA办公系统、移动OA应用等协同OA整体解决方案。泛微OAe-office平台uploadify.php处存在任意文件上传漏洞,攻击者通过漏洞可以获取服务器权限。 ......
  • 【分享】office 2007、2010、2013最终版分享 (转)
    转自宋永志博客,宋永志博客-最纯净的系统下载站(songyongzhi.com)Office2007SP3简体中文专业增强版2019.02(终结版)软件介绍:1、Office2007SP3专业增强版,集成补丁至2019年02月,集成正版序列号,安装完后自动激活。2、Office2007只有32位版本,可以兼容64位系统,请放心使用。3、......