/*
@author: Leepy
* @date: 2010-12
* @descript: ntko word编辑器JQ插件
*/
(
function
($) {
$.ntko
=
$.ntko
||
{};
$.fn.extend(
{
//
文件类型
fileType: {
Word:
"
Word.Document
"
,
Excel:
"
Excel.Sheet
"
,
PowerPoint:
"
PowerPoint.Show
"
},
//
弹出窗类型
showDialogType: {
New:
0
,
Open:
1
,
Save:
2
,
SaveCopy:
3
,
Print:
4
,
PageSetup:
5
,
Properties:
6
},
//
Word信息内容
wordInfo: {
Start:
0
,
End:
0
,
Text:
"
NDOFramer
"
},
//
表单设置
formSettings: {
UploadFileId:
"
EDITFILE
"
,
Data:
"
savetype=1&fileType=
"
,
FileName:
"
demo.doc
"
,
FormId:
0
},
_doc:
null
,
_selection:
null
,
_range:
null
,
//
初始化插件
ntko:
function
(parameters) {
parameters
=
parameters
||
{};
var
ndObj
=
null
;
this
.each(
function
(i) {
ndObj
=
$.ntko.init(
this
, parameters);
});
return
ndObj;
},
//
关闭插件
close:
function
() {
this
[
0
].close();
},
//
打开文档
open:
function
(url) {
this
[
0
].BeginOpenFromURL(url);
//
第二个参数为只读设置
},
//
新建Word文档
newWord:
function
() {
this
[
0
].CreateNew(
this
.fileType.Word);
},
//
新建Excel文档
newExcel:
function
() {
this
[
0
].CreateNew(
this
.fileType.Excel);
},
//
新建PowerPoint文档
newPowerPoint:
function
() {
this
[
0
].CreateNew(
this
.fileType.PowerPoint);
},
//
打开本地文档
openLocalFile:
function
() {
this
[
0
].showdialog(
this
.showDialogType.Open);
},
//
保存到本地
saveLocalFile:
function
() {
this
[
0
].ActiveDocument.Application.Dialogs(
83
).Show()
},
//
保存文档,返回是否保存成功
save:
function
(url, parameters) {
if
(
typeof
(parameters.formId)
!==
"
undefined
"
)
this
.formSettings.FormId
=
parameters.formId;
if
(
typeof
(parameters.data)
!==
"
undefined
"
)
this
.formSettings.Data
=
parameters.data;
var
retHTML
=
this
[
0
].saveToURL(url,
//
提交到的url地址
this
.formSettings.UploadFileId,
//
文件域的id,类似<input type=file id=upLoadFile 中的id
this
.formSettings.Data,
//
与控件一起提交的参数,savetype参数为要保存的文件格式office,html,pdf。filetype参数保存文件类型
this
.formSettings.FileName,
//
上传文件的名称,类似<input type=file 的value
this
.formSettings.FormId
//
与控件一起提交的表单id,也可以是form的序列号,这里应该是0.
);
return
retHTML;
},
//
下载远程文件
downloadFile:
function
(url, localPath) {
this
[
0
].DownloadFile(url, localPath);
},
//
插入本地文档
insertLocalFile:
function
() {
this
[
0
].ActiveDocument.Application.Dialogs(
164
).Show();
},
//
插入文档
insertFile:
function
(url) {
this
._doc
=
this
[
0
].ActiveDocument;
this
._doc.Activate();
//
this._doc.Select();
//
this._doc.Application.Selection.Select();
this
[
0
].AddTemplateFromURL(url);
},
//
插入本地图片
insertLocalImage:
function
() {
this
[
0
].ActiveDocument.Application.Dialogs(
163
).Show();
},
//
插入图片
insertImage:
function
(url, type) {
this
[
0
].InsertFile(url, type
+
8
);
},
//
插入文本
insertText:
function
(text) {
this
._doc
=
this
[
0
].ActiveDocument;
this
._doc.Activate();
this
._doc.Application.Selection.InsertAfter(text);
},
//
页面设置
setPageSetup:
function
() {
this
[
0
].showdialog(
this
.showDialogType.PageSetup);
},
//
文档属性设置
setProperty:
function
() {
this
[
0
].showdialog(
this
.showDialogType.Properties);
},
//
打印
print:
function
() {
//
this[0].PrintOut();
this
[
0
].showdialog(
this
.showDialogType.Print);
},
//
打印预览
printPreview:
function
() {
this
[
0
].PrintPreview();
},
//
关闭打印预览
printExit:
function
() {
this
[
0
].PrintPreviewExit();
},
//
隐藏工具栏
hideToolbar:
function
() {
this
[
0
].Activate(
false
);
this
[
0
].Toolbars
=
false
;
},
//
显示工具栏
showToolbar:
function
() {
this
[
0
].Activate(
false
);
this
[
0
].Toolbars
=
true
;
},
//
隐藏菜单栏
hideMenubar:
function
() {
this
[
0
].Activate(
false
);
this
[
0
].Menubar
=
false
;
},
//
显示菜单栏
showMenubar:
function
() {
this
[
0
].Activate(
false
);
this
[
0
].Menubar
=
true
;
},
//
获取或设置窗口高度
height:
function
(arg) {
if
(
typeof
(arg)
!==
"
undefined
"
) {
this
.css(
"
height
"
,arg);
}
else
{
return
this
.css(
"
height
"
); ;
}
},
//
获取或设置窗口宽度
width:
function
(arg) {
if
(
typeof
(arg)
!==
"
undefined
"
) {
this
.css(
"
width
"
, arg);
}
else
{
return
this
.css(
"
width
"
); ;
}
},
//
删除本地路径,如c:\\1.doc
deleteLocalFile:
function
(localPath) {
this
[
0
].DeleteLocalFile(localPath);
},
showView:
function
(showViewType) {
this
[
0
].Activate(
false
);
this
[
0
].ActiveDocument.ActiveWindow.View
=
showViewType;
},
//
添加本地附加文件
//
addLocalFile: function(fileID,locaPath) {
//
this[0].HttpAddPostFile(fileID, locaPath);
//
},
//
hostName: function() {
//
return this[0].HostName;
//
},
//
documentFullName: function() {
//
return this[0].DocumentFullName;
//
},
//
caption: function() {
//
return this[0].Caption;
//
},
//
track: function() {
//
this[0].SetCurrUserName("liping");
//
this[0].SetTrackRevisions(1);
//
},
//
showTrack: function() {
//
this[0].ShowRevisions(1);
//
this[0].ShowView(0);
//
},
//
是否只读
isReadOnly:
function
() {
return
this
[
0
].IsReadOnly;
},
//
文档是否已做修改
isDirty:
function
() {
return
!
this
[
0
].ActiveDocument.Saved;
},
//
获取文档所有内容,返回该Word文档内容Json
range:
function
() {
this
._doc
=
this
[
0
].ActiveDocument;
this
._doc.Activate();
this
._range
=
this
._doc.Range();
this
.wordInfo.Start
=
this
._range.Start;
this
.wordInfo.End
=
this
._range.End;
this
.wordInfo.Text
=
this
._doc.Range(
this
._range.Start,
this
._range.End).Text;
return
this
.wordInfo;
},
//
选中文档所有内容,返回该Word文档内容Json
select:
function
() {
this
._doc
=
this
[
0
].ActiveDocument;
this
._doc.Activate();
this
._doc.Select();
this
._selection
=
this
._doc.Application.Selection;
this
.wordInfo.Start
=
this
._selection.Start;
this
.wordInfo.End
=
this
._selection.End;
this
.wordInfo.Text
=
this
._doc.Range(
this
._selection.Start,
this
._selection.End).Text;
return
this
.wordInfo;
},
//
取消选中内容
unselect:
function
() {
if
(
this
._selection
!=
null
) {
this
._selection.Start
=
0
;
this
._selection.End
=
0
;
this
._selection
=
null
;
}
},
replace:
function
(text, start, end) {
//
alert(this._doc.Range(start,end).Text);
this
._doc.Range(start, end).Text
=
text;
//
alert(this._doc.range(this.wordInfo.Starti,this.wordInfo.End).Text);
},
//
清除文本
clear:
function
() {
var
wordDoc
=
this
[
0
].ActiveDocument;
wordDoc.Activate();
wordDoc.Select();
var
wordSelection
=
wordDoc.Application.Selection;
wordDoc.Range(wordSelection.Start, wordSelection.End).Text
=
""
;
}
});
$.extend($.ntko,
{
settings:
{
folder:
""
,
width:
"
700px
"
,
height:
"
500px
"
,
id:
"
OFRAMER_
"
+
new
Date().getTime(),
isToolbar:
true
,
isMenubar:
true
,
failed:
function
() { }
},
init:
function
(obj, parameters) {
//
赋值参数
if
(
typeof
(parameters.folder)
!==
"
undefined
"
)
this
.settings.folder
=
parameters.folder;
if
(
typeof
(parameters.width)
!==
"
undefined
"
)
this
.settings.width
=
parameters.width;
if
(
typeof
(parameters.height)
!==
"
undefined
"
)
this
.settings.height
=
parameters.height;
if
(
typeof
(parameters.id)
!==
"
undefined
"
)
this
.settings.id
=
parameters.id;
if
(
typeof
(parameters.isToolbar)
!==
"
undefined
"
)
this
.settings.isToolbar
=
parameters.isToolbar;
if
(
typeof
(parameters.isMenubar)
!==
"
undefined
"
)
this
.settings.isMenubar
=
parameters.isMenubar;
if
(
typeof
(parameters.failed)
!==
"
undefined
"
)
this
.settings.failed
=
parameters.failed
||
{};
//
构造插件Html
this
._createHTML(obj);
var
acxId
=
this
.settings.id;
var
acxJQjery
=
null
;
var
failed
=
this
.settings.failed;
//
判断是否安装了word编辑器插件
try
{
document.getElementById(acxId).Close();
acxJQjery
=
$(
"
#
"
+
acxId);
}
catch
(e) {
failed(e);
}
return
acxJQjery;
},
//
构造插件Html
_createHTML:
function
(obj) {
$(obj).html(
this
._stringFormat(
"
<object classid=\
"
clsid:A39F1330
-
3322
-
4a1d
-
9BF0
-
0BA2BB90E970\
"
codebase=\
"
{
0
}
/
officecontrol.cab#version=5,0,0,6\"" +
"
id=\
"
{
1
}\
"
width=\
"
{
2
}\
"
height=\
"
{
3
}\
"
>
"
+
"
<param name=\
"
wmode\
"
value=\
"
transparent\
"
>
"
+
"
<param name=\
"
_ExtentX\
"
value=\
"
16960
\
"
>
"
+
"
<param name=\
"
_ExtentY\
"
value=\
"
13600
\
"
>
"
+
"
<param name=\
"
BorderColor\
"
value=\
"
-
2147483632
\
"
>
"
+
"
<param name=\
"
BackColor\
"
value=\
"
-
2147483643
\
"
>
"
+
"
<param name=\
"
ForeColor\
"
value=\
"
-
2147483640
\
"
>
"
+
"
<param name=\
"
TitlebarColor\
"
value=\
"
-
2147483635
\
"
>
"
+
"
<param name=\
"
TitlebarTextColor\
"
value=\
"
-
2147483634
\
"
>
"
+
"
<param name=\
"
BorderStyle\
"
value=\
"
0
\
"
>
"
+
"
<param name=\
"
Titlebar\
"
value=\
"
0
\
"
>
"
+
"
<param name=\
"
Statusbar\
"
value=\
"
0
\
"
>
"
+
"
<param name=\
"
Toolbars\
"
value=\
"
{
4
}\
"
>
"
+
"
<param name=\
"
Menubar\
"
value=\
"
{
5
}\
"
>
"
+
"
<param name=\
"
_ExtentX\
"
VALUE=\
"
18071
\
"
>
"
+
"
<param name=\
"
_ExtentY\
"
VALUE=\
"
20981
\
"
>
"
+
"
<param name=\
"
IsShowToolMenu\
"
VALUE=\
"
1
\
"
>
"
+
"
<param name=\
"
IsNoCopy\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
IsHiddenOpenURL\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
MaxUploadSize\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
FileNew\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FileOpen\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FileClose\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FileSave\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FileSaveAs\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FilePrint\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FilePrintPreview\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FilePageSetup\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
FileProperties\
"
VALUE=\
"
-
1
\
"
>
"
+
"
<param name=\
"
IsStrictNoCopy\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
IsUseUTF8URL\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
MenubarColor\
"
VALUE=\
"
-
2147483643
\
"
>
"
+
"
<param name=\
"
IsUseControlAgent\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
IsUseUTF8Data\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
IsSaveDocExtention\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
IsDirectConnect\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
SignCursorType\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
IsResetToolbarsOnOpen\
"
VALUE=\
"
0
\
"
>
"
+
"
<param name=\
"
IsSaveDataIfHasVDS\
"
VALUE=\
"
0
\
"
>
"
+
"
</object>
"
,
this
.settings.folder,
this
.settings.id,
this
.settings.width,
this
.settings.height,
this
.settings.isToolbar
+
""
==
"
true
"
?
"
1
"
:
"
0
"
,
this
.settings.isMenubar
+
""
==
"
true
"
?
"
1
"
:
"
0
"
));
},
//
string格式化构造器
_stringFormat:
function
(str) {
var
args
=
arguments;
return
str.replace(
/
\{(\d+)\}
/
g,
function
(m, i) {
return
args[parseInt(i)
+
1
];
});
}
}
);
}
)(jQuery);