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).

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :