PageOffice6国产Linux系统最简集成代码(.NetCore)
本文描述了 PageOffice 产品在.NetCore 项目中如何集成调用。
PageOffice 国产版 :支持信创系统,支持银河麒麟 V10 和统信 UOS,支持 X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、longarch 芯片架构。
- 新建.NetCore 项目:PageOffice6-Net-Core-Simple
- 在此项目的“依赖项 - 包 - 管理 NuGet 程序包”中搜索到“Zhuozhengsoft.PageOffice" 程序后安装最新版本。
- 下载 PageOffice 客户端安装程序。
- windows 客户端安装程序:posetup_6.x.x.x.exe;
- 国产操作系统客户端安装程序:对应芯片的 PageOffice 客户端 deb 安装包;
PageOffice 客户端安装程序下载地址:https://gitee.com/pageoffice/pageoffice6-client/releases(opens new window)
-
拷贝 PageOffice 客户端安装程序到项目的 bin 目录下(项目的生成目录,比如:bin\Debug\net5.0)
-
修改 Startup.cs 文件,添加 PageOffice 服务器端程序的相关配置,代码如下:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseMiddleware<PageOfficeNetCore.POServer.ServerHandlerMiddleware>();
}
如果是.Net6 项目,就在 Program.cs 文件中添加代码:
app.UseMiddleware<PageOfficeNetCore.POServer.ServerHandlerMiddleware>();
- 在 D 盘根目录下准备一个有内容的 test.docx 文件。
- 新建 WordController,并编写代码在线打开 test.docx。WordController.cs 代码如下:
public class WordController : Controller
{
public IActionResult Index()
{
PageOfficeNetCore.PageOfficeCtrl poCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
poCtrl.WebOpen("D:\\test.docx", PageOfficeNetCore.OpenModeType.docNormalEdit, "tom");
ViewBag.POCtrl = poCtrl.GetHtmlCode();
return View();
}
<span class="hljs-comment">//接收客户端上传的文件流,并保存到文件</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">async</span> Task<ActionResult> <span class="hljs-title">SaveFile</span>()</span>
{
PageOfficeNetCore.FileSaver fs = <span class="hljs-keyword">new</span> PageOfficeNetCore.FileSaver(Request, Response);
<span class="hljs-keyword">await</span> fs.LoadAsync();
fs.SaveToFile(<span class="hljs-string">"D:\\"</span> + fs.FileName);
<span class="hljs-keyword">return</span> fs.Close();
}
}
- 编写“Word/Index”的 view 视图文件 Index.cshtml,代码如下:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
function Save() {
var saveUrl = "/Word/SaveFile";
pageofficectrl.SaveFilePage = saveUrl;
pageofficectrl.WebSave();}
function OnPageOfficeCtrlInit() {
pageofficectrl.AddCustomToolButton("保存", "Save", 1);}
</script>
</head>
<body>
<div style="width:auto; height:98vh;">
@Html.Raw(ViewBag.POCtrl)
</div>
</body>
</html>
- 在需要实现“点击超链接在线打开文件”的页面(比如:Views/Shared/_Layout.cshtml)中添加对 pageoffice.js 的引用。
<script type="text/javascript" src="/pageoffice.js"></script>
注意
项目中并不存在 pageoffice.js 文件,此文件来自于 Startup.cs 中配置的 PageOffice 服务器端程序,此程序中封装了 pageoffice.js。
- 然后在页面(比如:Views/Shared/_Layout.cshtml)中添加一个超链接,点击超链接调用 POBrowser 对象的 openWindow 方法,弹出新浏览器窗口访问“Word/Index”在线打开文件,代码如下:
在线打开文档 - 启动项目,点击“在线打开文档”超链接,查看在线打开编辑保存 Office 文件的效果。