CobaltCore assembly

本文关键字:assembly CobaltCore | 更新日期: 2023-09-27 18:05:06

我尝试在c#中实现一个可以使用CobaltCore程序集处理Cobalt协议的自定义Wopi主机。

但是我没有找到CobaltCore.dll的任何文档对象浏览器有点帮助..

请提供一些细节,如果有人有类似的问题。我应该如何使用Cobalt来破译这些信息?

CobaltCore assembly

关于文字编辑的实现,请点击这里:

我可以直接用Office Web Apps Server吗

// fsshttpb payload, basically decode from base64 encoded
byte[] test1 = System.Convert.FromBase64String("DAALAJzPKfM5lAabBgIAAO4CAABaBBYADW1zd29yZAd3YWN6AggA1RyhD3cBFgIGAAMFABoEIAAL3Do4buY4RJXm4575cgEiigICAAALAawCAFUDAQ==");
// create an atom object from the fsshttp input
AtomFromByteArray atomRequest = new AtomFromByteArray(test1);
RequestBatch requestBatch = new RequestBatch();
requestBatch.DeserializeInputFromProtocol(atomRequest);
// now you can inspect requestBatch to view the decoded objects
编辑:

下面是一个使用CobaltCore的示例实现。几乎是我在这个网站上对WOPI/FSSHTTP的回答的一个项目的组合。

https://github.com/thebitllc/WopiBasicEditor

也实现了Cobalt的编辑方法,像Julia一样,即使在锁定存储回调(包括合著者等)后,它也会停止在"无法编辑屏幕"。然而,我发现的是,OWA的日志系统揭示了关于OWA服务器试图做什么的相当多的细节。微软C: ' ProgramData ' ' OfficeWebApps ' ' Logs '极限状态数据我可以从这些日志中看到,它通过提供

来抱怨缺少访问令牌。
    &access_token=1&access_token_ttl=0 

到wopi url的末尾,这个错误就会消失。

我还测试了许多文件信息字段,并能够看到OWA服务器如何缓存信息。如果我们不断改变cfi。版本

FileInfo info = new FileInfo("C:''WOPI OWA WORD EDITOR''OWA_Source_Documents''" + fi.Name);
cfi.Version = info.LastWriteTimeUtc.ToString("s");

每次通过普通的word修改文件内容时,我们都会得到一个新的缓存项。

这些也会影响Word的视图模式,我怀疑会将我们锁定在Word编辑模式之外,但因为我没有工作,所以我还不能告诉。

 cfi.SupportsCoauth = true; // all three (3) needed to see the edit in browser menu in view mode .
 cfi.SupportsCobalt = true; // all three (3) needed to see the edit in browser menu in view mode .
 cfi.SupportsFolders = true; // all three (3) needed to see the edit in browser menu in view mode .
 cfi.SupportsLocks = true;
 cfi.SupportsScenarioLinks = false;
 cfi.SupportsSecureStore = true;
 cfi.SupportsUpdate = true;

这个选项锁定了单词编辑功能,除非你更新了文件的版本,否则即使你把它改回false,它也会保持锁定。

cfi.WebEditingDisabled = false;
罗杰霍格

感谢thebitllc为获取文件提供了正确的方法。

 System.IO.FileStream _FileStream = new System.IO.FileStream("C:''WOPI OWA WORD EDITOR''OWA_Updated_Documents''output.docx", System.IO.FileMode.Create, System.IO.FileAccess.Write);
GenericFdaStream myCobaltStream =  new GenericFda(cobaltFile.CobaltEndpoint, null).GetContentStream();
myCobaltStream.CopyTo(_FileStream);
_FileStream.Close();