如何以编程方式从InfoPath XSN模板创建InfoPath表单

时间:2012-01-31 22:46:04

标签: sharepoint sharepoint-2010 infopath infopath2010

我需要一个从SharePoint服务器上存在的XSN模板创建InfoPath实例表单的解决方案,我正在使用this approach但这会在我们可能没有写入权限的服务器临时目录中提取模板文件。对此有更好的解决方案吗?

1 个答案:

答案 0 :(得分:5)

您只需将CAB库更改为可以将模板文件解压缩到内存的库,就像这个一样,

Minimum C# code to extract from .CAB archives or InfoPath XSN files, in memory

然后致电myCab.ExtractFile("template.xml", out buffer, out bufferLen);

完整的代码看起来像

private byte[] GetXmlForm(SPDocumentLibrary list) {
  byte[] data = null;
  SPFile file = list.ParentWeb.GetFile(list.DocumentTemplateUrl);


  Stream fs = file.OpenBinaryStream();
  try {
    data = new byte[fs.Length];
    fs.Read(data, 0, data.Length);
  } finally {
    fs.Close();
  }

  byte[] buffer;
  int bufferLen;  
  CabExtract cab = new CabExtract(data);
  cab.ExtractFile("template.xml", out buffer, out bufferLen);

  return buffer;
}