WordとPowerPointが対象になりますが、getFileAsyncメソッドのfileTypeパラメータに“compressed”を指定することで、ドキュメントをバイト配列(OOXMLフォーマット(docx,pptx))として取得することができます。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script src="https://appsforoffice.microsoft.com/lib/1.0/hosted/office.js"></script> <script> Office.initialize = function(reason){} $(function(){ $("#btnOK").click(function(){ //1MB(1048576バイト)ごとにスライスして文書を取得 Office.context.document.getFileAsync("compressed", {sliceSize:1048576}, function(result){ if(result.status == "succeeded"){ var myFile = result.value; $("#result").empty(); $("#size").text("Size:" + myFile.size + "byte."); for (var i=0; i<myFile.sliceCount; i++){ myFile.getSliceAsync(i, function(result){ if(result.status == "succeeded"){ sendSlice(result.value); } }); } myFile.closeAsync(function(result){ if(result.status == "succeeded"){ $("#status").text("Status:File closed."); } else { $("#status").text("Status:File couldn't be closed."); } }); } }); }); }); function sendSlice(slice){ var data = slice.data; if(data){ $("#result").append('<span>index of the file slice:' + slice.index + '</span><br><textarea rows="4" cols="30">' + OSF.OUtil.encodeBase64(data) + '</textarea><br>'); } } </script> </head> <body> <input id="btnOK" type="button" value="OK"><br> <span id="size">Size:</span><br> <span id="status">Status:</span><br> <div id="result"></div> </body> </html>
上記コードではsliceSizeオプションでスライスサイズを1MBに指定していますが、指定しない場合はデフォルトのスライスサイズ4MB(4194304バイト)が適用されます。
また、上記コードでは取得したバイト配列をBase64エンコードしてtextareaの値としていますが、このエンコードされた値をバイナリ変換すると、下図のようにOOXMLフォーマットのドキュメントになります。
・Document.getFileAsync method (apps for Office)
http://msdn.microsoft.com/en-us/library/office/jj715284.aspx
・FileType enumeration (apps for Office)
http://msdn.microsoft.com/en-us/library/office/jj220084.aspx
・File.getSliceAsync method (apps for Office)
http://msdn.microsoft.com/en-us/library/office/jj715281.aspx
この記事へのコメントはありません。