2012-01-31 3 views
2

Мне нужно решение, которое создает форму экземпляра InfoPath из шаблона XSN, существующего на сервере SharePoint, я использую this approach, но это извлекает файлы шаблонов в каталоге temp сервера что у нас может не быть разрешения на запись. Есть ли лучшее решение для этого?Как программно создать форму InfoPath из шаблона InfoPath XSN

ответ

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; 
} 
+0

это очень полезно для меня, спасибо. – Amir

+0

Отлично, я вижу, что ваш новый сайт, нажимайте стрелку вверх в левой части вопроса, чтобы указать, что ответ был полезным/полезным :) –

+0

спасибо моему другу. – Amir

Смежные вопросы