基于WPS的在线编辑服务【.net Core 3.1】

很多时候大家都需要用到在线文档编辑服务之类的东西,今天就以WPS的在线编辑为例。【目前仅支持以企业形式申请】

链接WPS开放平台

效果图如下

 用到示例https://github.com/guolaopi/WPSOnlineDemo

 改过之后的后台代码示例:

[Route("api/[controller]/[Action]")]
    [ApiController]
    public class WpsController : ControllerBase
    {
        private ILogger _logger;
        private SessionManager _sessionManager;
        private IWebHostEnvironment _webHostEnvironment;
        private readonly UserService _userService;
        public WpsController(ILogger<WpsController> logger, SessionManager sessionManager, IWebHostEnvironment webHostEnvironment, UserService userService)
        {
            _logger = logger;
            _sessionManager = sessionManager;
            _webHostEnvironment = webHostEnvironment;
            _userService = userService;
        }

        /// <summary>
        /// 简单过滤一下HttpRequest参数
        /// </summary>
        /// <param name="Request"></param>
        /// <returns></returns>
        private RequestParam FilterRequestForWPS(HttpRequest Request)
        {
            var result = new RequestParam();
            result.FileId = Request.Headers["x-weboffice-file-id"].ToString();
            var queryStr = Request.QueryString.ToString();
            queryStr = queryStr.StartsWith("?") ? queryStr.Substring(1) : queryStr;
            if (string.IsNullOrEmpty(queryStr) || string.IsNullOrEmpty(result.FileId))
            {
                return new RequestParam
                {
                    code = 403,
                    msg = "参数错误,无法打开文件",
                    Status = false
                };
            }

            // url参数序列化成Dictionary
            result.Params = queryStr.Split("&", StringSplitOptions.RemoveEmptyEntries).ToDictionary(p => p.Split("=")[0], p => p.Split("=")[1]);

            // 此处判断是否传递了自定义的 _w_userId 参数,如果不需要此参数的话可以注释该判断
            if (!result.Params.ContainsKey("_w_userId"))
            {
                return new RequestParam
                {
                    code = 403,
                    msg = "用户异常",
                    Status = false
                };
            }
            return result;
        }

        /// <summary>
        /// 生成iframe用的url(此方法非WPS官方的,主要是为了签名,也可以自己实现)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [Route("/api/wps/genarate")]
        [HttpPost]
        [Authorize]
        [RoleAuthorize]
        public Task<GenarateResult> GenarateWPSUrl(GenarateRequest request)
        {
            try
            {
                //请求文件是否存在
                if (string.IsNullOrEmpty(request.FileName) || !System.IO.File.Exists($"{_webHostEnvironment.WebRootPath}/{request.FilePath}/{request.FileName}"))
                    return Task.Run(() =>
                    {
                        return new GenarateResult { Url = null };
                    });
                else
                {
                    return Task.Run(() =>
                    {
                        var url = WPSSignatureHelper.GenarateUrl(request.FileId,
                                                        request.FileType,
                                                        new Dictionary<string, string> {
                                                    { "_w_userId", _sessionManager.CurrUser.Id.ToString() },
                                                    { "_w_fileName", request.FileName },
                                                    { "_w_readOnly", request.ReadOnly },
                                                    { "_w_filePath", request.FilePath }
                                                        });
                        // 上面的写法是在生成的url中带了两个自定义参数 _w_userId 和 _w_fileName,可以根据业务自己扩展,生成url是这样的:
                        // https://wwo.wps.cn/office/w/123?_w_appid=123456&_w_fileName=x.docx&_w_userId=5024&_w_signature=xxxxx

                        _logger.LogInformation($"生成URL:{url}");
                        // 也可以不写自定义参数,这样生成的url会只有 _w_appId 和
作为ASP.NET项目的开发者,在应对用户的Word、Excel文档时,您是否迫切希望Visual Studio工具箱里能有现成的Word、Excel标准ASP.NET控件可用就太好了?现在梦想已经成真,想在网页上显示编辑Word、Excel文档并且调用微软Office的强大功能,就直接从工具箱拖动一个PageOffice控件到Web页面上就可以了,就和使用常用的TextBox控件一样简单方便。 PageOffice是什么? PageOffice for ASP.NET是一款非常优秀的专业的集成微软OFFICE功能的ASP.NET控件平台,能够帮助Web开发人员轻松实现在网页中嵌入运行微软Office的特殊功能。PageOffice把微软复杂的Office编程接口(COM API) 有效地整合于 ASP.NET 环境,通过简化的.NET类库接口为开发者提供了在Web项目里获得Office众多强大功能的机会,并且能够同时利用来自 .NET Framework 的开发效率和软件功能。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和用户输入提交的高级复杂功能。只要集成PageOffice,您将能够轻松应对在Web项目开发中遇见的绝大部分和Office文档有关的功能和难题。您只需把精力集中在项目业务逻辑上,Office技术问题就交给PageOffice实现解决吧。 PageOffice除了提供Word/Excel动态数据填充,格式控制,Word/Excel用户输入提交,Word/Excel/PowerPoint/WPS等Office文档的在线打开、只读浏览、编辑、保存等功能外,还给在线协同办公提供了强大的支持功能:可编辑区域控制,强制痕迹保留,并发编辑控制,手写批注,手写签名,圈阅签字,电子印章、动态模板套红等。 专业的MSDN风格的开发帮助,上百的示例代码,确保您的开发效率事半功倍。 运行环境 服务器端:Windows2003、Windows2008、Windows2012及Windows XP、Windows7、Windows8等(包括64位版本);.Netframework2.0及以上版本。 客户端:Windows XP、Windows Vista、Windows7、Windows8及以上版本(包括64位版本);Microsoft Office2003、2007、2010、2013;IE 6.0、7.0、8.0、9.0、10.0。 名称:PageOffice for ASP.NET专业版 2.0 下载:http://www.zhuozhengsoft.com/down/PageOffice_ASP.NET.rar 大小:13.8MB 版本:专业版 2.0
金山文档WPS是一种在线编辑工具,可以帮助用户创建、编辑和共享各种办公文档。.NET是一种开发框架,可用于创建不同类型的应用程序。下面是金山文档WPS在线编辑.NET的接入指南: 1. 注册API密钥:首先,用户需要在金山文档WPS官方网站上注册一个账号,并获取一个API密钥。 2. 下载和安装SDK:用户需要下载金山文档WPS.NET SDK,然后根据官方提供的安装指南,将SDK集成到自己的开发环境中。 3. 引入SDK包:在.NET项目中,用户需要将下载的SDK包引入到项目中,以便能够使用金山文档WPS的API接口。 4. 进行身份验证:用户可以使用SDK提供的方法,在应用程序中进行身份验证。用户需要使用之前获取的API密钥进行身份验证,以便能够使用金山文档WPS编辑功能。 5. 创建和编辑文档:成功进行身份验证后,用户可以使用SDK提供的方法创建、打开和编辑金山文档WPS支持的各种文件格式,如.docx、.xlsx和.pptx等。 6. 保存和分享文档:一旦用户完成了对文档的编辑,可以使用SDK提供的方法保存文档,并可以选择将其分享给其他人或保存到本地设备。 7. 错误处理和异常处理:在使用金山文档WPS的API接口时,用户需要处理可能发生的错误和异常情况,以确保应用程序的稳定性和可靠性。 总之,金山文档WPS在线编辑.NET的接入指南主要包括注册API密钥、下载和安装SDK、引入SDK包、进行身份验证、创建和编辑文档、保存和分享文档,以及错误处理和异常处理。有了这些步骤的指导,用户就可以在.NET开发环境中轻松地接入和使用金山文档WPS在线编辑功能了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值