Proof Of Concept Word Automation on SharePoint 2013

Voici un bout de code permettant l’utilisation de l’application de service Word Automation de SharePoint 2013 dans un composant WebPart.

Nous utilisons ici la nouvelle fonctionnalité de conversion synchrone et non la création d’une tâche façon SharePoint 2010.


publicclassConvertToPDF : WebPart
{
  TextBox tbt =newTextBox();
  Button btn =newButton();

  protectedoverridevoid CreateChildControls()
  {
     btn.Text ="Convert";
     btn.Click += btn_Click;
     this.Controls.Add(tbt);
     this.Controls.Add(btn);
  }

  void btn_Click(object sender, EventArgs e)
  {
     SPFile file =SPContext.Current.Web.GetFile(tbt.Text);
     byte[] PDF = WriteSpFile(file);

     SPWeb web =SPContext.Current.Web;

     SPList list = file.Item.ParentList;

     // Url for file to be created
     string destFile = list.RootFolder.Url +"/"+ file.Name +".pdf";

     // create the document and get SPFile/SPItem for
     // new document
     SPFile addedFile = list.RootFolder.Files.Add(destFile, PDF, false);
     SPItem newItem = addedFile.Item;
     newItem["Title"] ="PDF";
     newItem.Update();
     addedFile.Update();
  }

  publicstaticbyte[] WriteSpFile(SPFile spFile)
  {
    using (Stream read = spFile.OpenBinaryStream())
    {
      using (MemoryStream write =newMemoryStream())
      {
        string wordAutomationServiceName = "Word";
        SyncConverter sc = newSyncConverter(wordAutomationServiceName);
        SPSite spSite = SPContext.Current.Site;
        sc.UserToken = spSite.UserToken;
        sc.Settings.UpdateFields =true;
        sc.Settings.OutputFormat =SaveFormat.PDF;
        ConversionItemInfo info = sc.Convert(read, write);

        if (info.Succeeded)
        {
          return write.ToArray();
        }
      }
    }
   returnnull;
  }
}

Il est nécessaire d’inscrire à votre projet la référence à la DLL Microsoft.Office.Word.Server du dossier ISAPI de SharePoint.

dll

Attention ce code n’a aucun contrôle d’erreur (POC).

%d blogueurs aiment cette page :