文檔控件NTKO OFFICE 詳細使用說明之預覽word編輯保存回服務器


1、在線預覽Word文件

(1) 運行環境

① 瀏覽器:支持IE7-IE11(平台版本還支持ChromeFirefox

② IE工具欄-Internet 選項:將www.ntko.com加入到瀏覽器的可信站點中,不啟用保護模式,並將HTTPS驗證取消

③ 如果是開發人員首次使用文檔控件,需要將控件手動注冊控件,獲取控件的版本clisid以及版本信息Version(如果程序已經開發完則可以忽略此步驟)

(2) 創建一個加載控件的JS文件,用戶只需修改控件版本號Versionclassidcab包路徑,以及添加授權即可。具體可訪問http://dev.ntko.com:8000/查看

① JS文件代碼如下:(-1表示TRUE,0表示FALSE

 

////----在線編輯word並保存
document.write('<object id="TANGER_OCX" classid="clsid:A64E3073-2016-4baf-A89D-FFE1FAA10EC0"');
document.write('codebase="NTKO/OfficeControl.cab#version=5,0,3,0" width="100%" height="100%"> ');
document.write('<param name="Toolbars" value="-1"> '); // 工具欄
document.write('<param name="Menubar" value="0"> '); //菜單欄
document.write('<param name="CustomToolBar" value="-1"> ');
document.write('<param name="Titlebar" value="-1"> '); //標題欄
document.write('<param name="Caption" value="華測計量技術有限公司專用">');//標題內容
document.write('<param name="IsUseControlAgent" value="-1"> '); //是否是控制請求數據,其他請他不允許
document.write('<param name="IsNoCopy" value="0"> '); //0不允許復制
document.write('<param name="IsDirectConnect" value="-1"> ');
document.write('<param name="DefaultOpenDocType" value="1"> ');//1表示只能打開word文檔
document.write('<param name="FileOpen" value="0"> ');
document.write('<param name="FileNew" value="0"> ');
document.write('<param name="FileSave" value="0"> ');
document.write('<param name="FileSaveAs" value="0"> ');
document.write('<param name="FilePrint" value="0"> ');
document.write('<param name="FilePrintPreview" value="0"> ');
document.write('<param name="ProductCaption" value="Office Anywhere 3.0"> ');
document.write('<param name="ProductKey" value="65F867689D7FF5CD02FBE4AA23764306F715A9E2">');
document.write('<SPAN STYLE="color:red">不能裝載NTKO OFFICE文檔控件。請在檢查瀏覽器的選項中檢查瀏覽器的安全設置。</SPAN> ');
document.write('</object> ');

 

① View代碼如下:

 

@{
    ViewBag.Title = "Word";
}
<h2>Index</h2>
<html>
<head>
    <title>NTKO Office文檔控件預覽Word修改保存回服務器演示示例</title>
    <meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#ffffff" ;>
    <p>
        <span>針對Word書簽的操作</span>
        <button onclick="AddPicToWord()">添加圖片</button>
        <button onclick="ReplacePicToWord()">替換圖片</button>
        <button onclick="AddTextToWord()">插入文字</button>
        <button onclick="ReplaceTextToWord()">替換指定的文字</button>
        <input type="submit" value="保存文檔" id="_upload">
    </p>
    <script src="~/Scripts/ntkoGenObj.js"></script>
</body>
</html>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script language="javascript">
    //ntko控件初始化完成后才進行文檔的加載
    $(function () {
        inIt();
    });
    function inIt() {
        if (TANGER_OCX == null) {
            alert("NTKO OFFICE文檔控件未能正確裝載。請在本頁面裝載時窗口上方出現的提示條上點擊裝載ActiveX控件,並在隨后出現的安裝ActiveX的對話框中選擇‘是’。");
            return;
        }
        OpenFile();
    }
    //以文件流的形式加載文件
    function OpenFile() {
        TANGER_OCX.BeginOpenFromURL('@Url.Action("ReturnFileStream", "WordView")', true);
    }
    //保存修改后的文件回服務器
    $("#_upload").click(function () {
        var list = TANGER_OCX.ActiveDocument.BookMarks;//書簽列表
        alert("書簽數:" + list.Count);
        TANGER_OCX.SaveToURL('@Url.Action("uploadFile", "WordView")', "TANGER_OCX", "", "", "", true);
    });
    var bookmarkname = "審核人";
    var bookmarkname2 = "批准人";
    //添加圖片
    function AddPicToWord() {
        //書簽列表
        var list = TANGER_OCX.ActiveDocument.BookMarks;
        alert("書簽數為:" + list.Count);
        //判斷書簽是否存在
        if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookmarkname) && TANGER_OCX.ActiveDocument.BookMarks.Exists(bookmarkname2)) {
            alert("書簽存在,開始插入審核人簽名");
            TANGER_OCX.ActiveDocument.Application.Selection.GoTo(-1, 0, 0, bookmarkname);//跳轉指定書簽位置
            TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/william.jpg")", true, 0, 0, 1, 100, 1);//添加圖片,true是以浮動圖片插入,false就相當於嵌入在光標處了 ---插入正確
            //AddIdtoPicture(bookmarkname);//為圖片添加唯一標識(暫時用不到)
            alert("書簽存在,開始插入批准人簽名");
            TANGER_OCX.ActiveDocument.Application.Selection.GoTo(-1, 0, 0, bookmarkname2);//跳轉指定書簽位置
            TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/jimly.jpg")", true, 0, 0, 1, 100, 1);//添加圖片,true是以浮動圖片插入,false就相當於嵌入在光標處了 ---插入正確
            alert("圖片添加成功");
        }
    }

    //為圖片列表中圖片添加唯一標識(圖片的AlternativeText屬性可以設置為書簽的名字name)
    function AddIdtoPicture(name) {
        alert("開始添加唯一標識" + name);
        var shapes = TANGER_OCX.ActiveDocument.Shapes;
        for (var i = 1; i <= shapes.Count; i++) {
            if (shapes(i).Type == 13) {
                if (shapes(i).AlternativeText == "") {
                    alert(name);
                    shapes(i).AlternativeText = name;
                }
            }
        }
    }

    //判斷書簽是否存在,然后刪除圖片,替換圖片
    function ReplacePicToWord() {
        var list = TANGER_OCX.ActiveDocument.BookMarks;
        alert("書簽數為:" + list.Count);
        for (var i = 1; i <= list.Count; i++) {
            var markname = TANGER_OCX.ActiveDocument.BookMarks(i).Name;
            alert(markname);
        }
        if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookmarkname)) {
            alert("書簽存在,開始替換審核人簽名");
            var shapes = TANGER_OCX.ActiveDocument.Shapes;
            alert("圖片數量" + shapes.Count);
            for (var i = 1; i <= shapes.Count; i++) {
                alert(shapes(i).Type + shapes(i).AlternativeText);
                //根據圖片的類型以及AlternativeText屬性(書簽的名字來確定圖片)
                if (shapes(i).Type == 13 && shapes(i).AlternativeText == "william") {
                    shapes(i).Delete();
                    alert("刪除成功");
                }
            }
            TANGER_OCX.ActiveDocument.Application.Selection.GoTo(-1, 0, 0, bookmarkname);//跳轉指定書簽位置
            TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/jimly.jpg")", true, 0, 0, 1, 100, 1);//添加圖片,true是以浮動圖片插入,false就相當於嵌入在光標處了 ---插入正確
        } else {
            alert("書簽不存在,請添加");
        }
    }
</script>

<script>
    var bookName = "審核時間";
    //在書簽位置設置書簽值
    function AddTextToWord() {
        if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookName)) {
            //判斷書簽是否存在
            TANGER_OCX.SetBookmarkValue(bookName, "2018/03/13");
            //添加書簽值
            TANGER_OCX.ActiveDocument.Bookmarks(bookName).Range.Select();//選中書簽的內容
            //設置為上標
            TANGER_OCX.ActiveDocument.Application.Selection.Font.SuperScript = 9999998;
            TANGER_OCX.ActiveDocument.Application.Selection.Font.Italic = true;//設置成斜體
            TANGER_OCX.ActiveDocument.Application.Selection.Font.Bold = true;//加粗
            TANGER_OCX.ActiveDocument.Application.Selection.Font.StrikeThrough = true;//帶有刪除線
            TANGER_OCX.ActiveDocument.Application.Selection.Font.Underline = true;//帶有下划線
            TANGER_OCX.ActiveDocument.Application.Selection.Font.NameFarEast = "宋體";//字體
            TANGER_OCX.ActiveDocument.Application.Selection.Font.Size = 18;//大小
            TANGER_OCX.ActiveDocument.Application.Selection.Font.Color = 255;//顏色

            //設置為下標
            //TANGER_OCX.ActiveDocument.Application.Selection.Font.Subscript = 9999998;
        }
    }
    //判斷書簽是否存在,然后替換書簽值(替換文本)
    function ReplaceTextToWord() {
        if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookName)) {
            TANGER_OCX.SetBookmarkValue(bookName, "YYYYYYYYYYYY");
        }
    }
    //替換文當中所有內容和Text值相等的值(暫時用不着)
    function Searchs() {
        var sel = null;
        sel = TANGER_OCX.ActiveDocument.Application.Selection;
        var result = true;
        sel.Find.ClearFormatting();
        sel.Find.Text = "王永樂";
        sel.Find.Forward = true;
        sel.Find.Wrap = 1;
        do {
            result = sel.Find.Execute();
            if (result) {
                sel.Font.Color = 255;
                sel.Font.Name = "Arial";
                sel.Font.Size = 24;
            }
        }
        while (result);
    }
</script>

 

① Controller代碼如下:

 

        /// <summary>
        /// 打開文件(流的形式返回)
        /// </summary>
        /// <returns></returns>
        public ActionResult ReturnFileStream()
        {
            var bytes = Properties.Resources.word;
            var fileStream = new MemoryStream(bytes);
            return new FileStreamResult(fileStream,"application/xhtml+xml");
        }

        /// <summary>
        /// 保存文件
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public ActionResult uploadFile()
        {
            var files = Request.Files[0];
            var path = Server.MapPath($"~/{DateTime.Now.ToLongDateString()}.doc");
            FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
            byte[] bytes = new byte[files.InputStream.Length];
            files.InputStream.Read(bytes, 0, bytes.Length);
            fs.Write(bytes, 0, bytes.Length);
            fs.Close();
            return View("Index");
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM