|
添加InfoJetSoft.Service.dll引用
|
|
请在VS.NET中点击"填加引用..."菜单, 在目录 C:\Inetpub\wwwroot\InfoJetServiceDemo\bin(InfoJet
Service Demo Web应用程序的安装位置) 中找到InfoJetSoft.Service.dll,
把它添加到项目中。
请注意: 当新版本的InfoJet Service发布了, 请更新InfoJetSoft.Service.dll的引用。
InfoJetSoft.Service.dll还引用下列程序集合:
Interop.MSScriptControl.dll
Microsoft.Office.Interop.InfoPath.SemiTrust.dll
Microsoft.Office.InfoPath.Permission.dll
|
|
|
请在ASP.NET应用程序根目录中创建分别名为"css","../images"和"js"的目录。
之后请将相应文件拷贝到其中:
css -
calendar-blue.css
images -
infojet_calendar.gif
infojet_collection_arrow.gif
infojet_menu_check.gif
infojet_menu_group.gif
infojet_menu_right_arrow.gif
infojet_optional_arrow.gif
infojet_progress_circle.gif
infojet_separator_left.gif
infojet_separator_middle.gif
infojet_separator_right.gif
infojet_transparent.gif
infojet_menu_xcollection_focus_arrow.gif
infojet_menu_xcollection_over_arrow.gif
infojet_menu_xoptional_focus_arrow.gif
infojet_menu_xoptional_over_arrow.gif
infojet_menu_xreplace_focus_arrow.gif
infojet_menu_xreplace_over_arrow.gif
infojet_red_star.gif
infojet_picturebutton_placeholder.gif
infojet_hyperlinkbox.gif
infojet_addressbook.gif
infojet_red_delete.gif
(一些图片属于Microsoft InfoPath。)
js -
unauthorized_dialog.htm
uploadfile_dialog.htm
uploadpicture_dialog.htm
editink_dialog.htm
InfoJetSoft.InkPicture.dll
editlink_dialog.htm
pngpicker_dialog.htm
calendar.js
calendar-en.js
calendar-setup.js
infojet.js
当InfoJet Service新版本发布时,这些文件(尤其是infojet.js)可能被修改,请更新它们。
|
|
|
请在Web应用程序根目录中创建一个名为xdoc.aspx的ASP.NET页面。
并将下列代码拷贝到xdoc.aspx.cs中:
using InfoJetSoft.Service;
protected override void Render(HtmlTextWriter output) {
try{
InfoJetForm form =
InfoJetService.UpdateForm(this.Context);
output.Write(form.Xhtml);
output.Close();
}catch(Exception e){
output.Write(e.Message +
"<br>");
output.Write(e.StackTrace);
output.Close();
}
}
最后请将ValidateRequest="false"页面属性添加到xdoc.aspx中。
|
|
|
在调用InfoJetService上的其它方法之前,请使用
string InfoJetService.Register(HttpContext context, byte[] xsnContent)
注册InfoPath表单模板。 参数xsnContent是表单模板文件的二进制内容。 这个方法将返回表单模板的publish url, publish
url将在方法BuildFormByTemplate()和BuildFormByXML()中作为一个参数使用。
请最好在一个单独的ASP.NET页面(比如名为Manager.aspx)中调用Register()方法,
因为Register()方法会调用extrac32.exe并访问磁盘目录,当impersonation开启时它需要更多的权限。
请注意,试用版的InfoJet Service只支持一个InfoPath表单模板,如果您在试用版中注册更多的表单模板,Regiter()方法将返回Null。
|
|
|
(1). 请在Web应用程序中创建一个名为EditDoc.aspx的ASP.NET页面。
(2). 在页面中添加一下列Label控件:
<asp:Label ID="xDocView" runat="server" EnableViewState="False"
Text="InfoPath Web Form will be shown here." ></asp:Label>
禁用Label控件的ViewState,可以改进Web表单的性能。
然后在Page_Load事件中添加下列代码:
using InfoJetSoft.Service;
InfoJetForm form = InfoJetService.BuildFormByTemplate(this.Context,
publishUrl);
this.xDocView.Text = form.Xhtml;
InfoJetService.BuildFormByTemplate()方法的参数publishUrl是
InfoJetService.Register(HttpContext context, byte[] xsnContent)方法的返回值。
(3). 在EditDoc.aspx中添加下列css和javascript文件引用:
<link rel="stylesheet" type="text/css" media="all"
href="css/calendar-blue.css" title="winter"></link>
<script type="text/javascript" src="js/calendar.js"></script>
<script type="text/javascript" src="js/calendar-en.js"></script>
<script type="text/javascript" src="js/calendar-setup.js"></script>
<script type="text/javascript" src="js/infojet.js"></script>
(4). 在页面EditDoc.aspx的onload事件中调用infojet.js中的InfoJet_Init()方法:
<body onload="InfoJet_Init();">
(5). 在EditDoc.aspx中添加页面属性ValidateRequest="false"。
(6). 请删除EditDoc.aspx的HTML文档类型声明(例如<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">),
因为在某些HTML文档类型下InfoJet Service不能准确定位HTML元素位置。
现在,模板XML文档的Web表单视图(form.Xhtml)将能显示在页面上。
您可以使用下列代码显示一个已存XML文档的Web表单:
using InfoJetSoft.Service;
InfoJetForm form = InfoJetService.BuildFormByXML(this.Context, publishUrl,
xml);
this.xDocView.Text = form.Xhtml;
参数xml是已存XML文档的string内容。
|
|
|
请将下列代码添加到EditDoc.aspx中:
<form name="form1" action="SaveDoc.aspx" method="post">
<asp:Label ID="xDocView" runat="server" EnableViewState="False"
Text="InfoPath Web Form will be shown here." ></asp:Label>
<input type="button" value="Submit Doc"
onclick="document.forms['form1'].submit();"></input>
</form>
当用户点击"Submit Doc"按钮,用户编辑过的XML数据将被提交到SaveDoc.aspx。
|
|
|
请创建一个名为SaveDoc.aspx的ASP.NET页面。
然后在Page_Load事件中添加下列代码:
using InfoJetSoft.Service;
InfoJetForm form = InfoJetService.ReloadForm(this.Context);
//...保存form.Xml到磁盘或数据库
您可以编写一些代码将form.Xml属性保存到磁盘或数据库。
|
|
|
请参考 配置 和 常见问题 来提高集成了InfoJet Service的应用程序的稳定性和启用更多功能。
如果您有任何问题,请通过 support@infojetsoft.com 联系我们。
|
|