none
Opening serialized document in word RRS feed

  • Question

  • Hi,

    What I want to do is open a word file from the server in word using my office app.

    On the server I have c# code that takes a .docx document and adds it to a Memory stream -> then convert to a byte array -> then encodes the byte array to base64 before sending it through JSON serialization to my office app.

    Server code:

    MemoryStream vStream = new MemoryStream();
    			UserContext.Current.GetFileStream("atbv_General_TempTestTable", new System.Guid("786B64DE-D8F3-4255-A33C-A851190F6606")).CopyTo(vStream);
    			
    			if (vStream.CanSeek)
    		    {
    		        vStream.Seek(0, SeekOrigin.Begin);
    		    }
    			
    			byte[] byteArr = vStream.ToArray();
    			
    			string binStr = Convert.ToBase64String(m_Bytes);
    			
    			JSON.SerializeToResponse(binStr , pContext.Response);

    However when I receive it on the client side (in the office app) and base64 decode it, I get an incomprehensible result when inserting the result into the document.

    Client code:

    var Base64 = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (e) { var t = ""; var n, r, i, s, o, u, a; var f = 0; e = Base64._utf8_encode(e); while (f < e.length) { n = e.charCodeAt(f++); r = e.charCodeAt(f++); i = e.charCodeAt(f++); s = n >> 2; o = (n & 3) << 4 | r >> 4; u = (r & 15) << 2 | i >> 6; a = i & 63; if (isNaN(r)) { u = a = 64 } else if (isNaN(i)) { a = 64 } t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a) } return t }, decode: function (e) { var t = ""; var n, r, i; var s, o, u, a; var f = 0; e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (f < e.length) { s = this._keyStr.indexOf(e.charAt(f++)); o = this._keyStr.indexOf(e.charAt(f++)); u = this._keyStr.indexOf(e.charAt(f++)); a = this._keyStr.indexOf(e.charAt(f++)); n = s << 2 | o >> 4; r = (o & 15) << 4 | u >> 2; i = (u & 3) << 6 | a; t = t + String.fromCharCode(n); if (u != 64) { t = t + String.fromCharCode(r) } if (a != 64) { t = t + String.fromCharCode(i) } } t = Base64._utf8_decode(t); return t }, _utf8_encode: function (e) { e = e.replace(/\r\n/g, "\n"); var t = ""; for (var n = 0; n < e.length; n++) { var r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r) } else if (r > 127 && r < 2048) { t += String.fromCharCode(r >> 6 | 192); t += String.fromCharCode(r & 63 | 128) } else { t += String.fromCharCode(r >> 12 | 224); t += String.fromCharCode(r >> 6 & 63 | 128); t += String.fromCharCode(r & 63 | 128) } } return t }, _utf8_decode: function (e) { var t = ""; var n = 0; var r = 0, c1 = 0, c2 = 0; while (n < e.length) { r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r); n++ } else if (r > 191 && r < 224) { c2 = e.charCodeAt(n + 1); t += String.fromCharCode((r & 31) << 6 | c2 & 63); n += 2 } else { c2 = e.charCodeAt(n + 1); var c3 = e.charCodeAt(n + 2); t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); n += 3 } } return t } }
                            Office.context.document.setSelectedDataAsync(Base64.decode(gContent), function (asyncresult) {
                                console.log(asyncresult);
                            });



    • Edited by SteffenO Wednesday, June 3, 2015 12:14 PM
    Wednesday, June 3, 2015 12:12 PM

Answers

  • Hi SteffenO,

    As far as I know, the JavaScript API doesn’t support to open a serialized document.

    What’s kind of scenario that needs to open a serialized document? I think you may consider OpenXML format.

    For Document.setSelectedDataAsync method, it is used to writes data to the current selection in the document instead of open a word file and the data type can be string, Html, Office Open XML and so on, there isn't the type of base64 string.

    For that feature, I suggest that you could submit the user voice here: http://officespdev.uservoice.com/

    Regards                      

    Starain


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    Thursday, June 4, 2015 6:24 AM
    Moderator