05. Januar 2015 · von Steffen Nörtershäuser

Erklärt: Dokumentenkonvertierung mit SharePoint Word Automation Services

In einem aktuellen Projekt war es notwendig, nicht nur Word Dokumente zu generieren, sondern auch PDF Dokumente anzubieten. Wie Word Dokumente mit Platzhaltern befüllt werden können, habe ich bereits in einem vorherigen Artikel beschrieben. Doch wie kann man nun aus diesen Word Dokumenten PDF Dateien generieren? Wenn man im SharePoint Bereich unterwegs ist, lässt sich diese Anforderung mit den Word Automation Services einfach umsetzen. Dies werde ich in diesem Artikel vorstellen.

SharePoint Word Automation Services
Wie der Name schon andeutet, bieten die SharePoint Word Automation Services verschiedene Funktionalitäten, um mit Word Dokumenten zu arbeiten. Neben dem Neugenerieren von dynamischen Inhalten (Inhaltsverzeichnisse etc.) ist es möglich, über diese Services Dokumente von verschiedensten Formaten in verschiedenste Formate zu konvertieren. Hierbei ist jedoch zu beachten, dass die Word Automation Services nicht in der Foundation Version des SharePoint 2013 enthalten sind.

Einrichten der Word Automation Services
Bevor mit den Word Automation Services gearbeitet werden kann, müssen diese auf dem SharePoint Server eingerichtet werden. Hierfür wechseln wir in die Zentraladministration und wählen unter Application Management den Punkt „Manage services on server“:

was_manage_services

Hier muss nun sichergestellt werden, dass die Word Automation Services gestartet sind:

was_started

Anschließend wählen wir unter Application Management den Punkt „Manage service applications“ aus:

was_manage_service_applications

Gibt es hier noch keinen Eintrag für die Word Automation Services, muss eine neue Service Application für die Word Automation Services angelegt werden. Dafür wählt man den Eintrag „New => Word Automation Services“:

was_new_service_application

Im anschließenden Formular kann der Name des Services und der App Pool frei gewählt werden. Ich habe mich der Einfachheit halber für den Namen „Word Automation Services“ entschieden:

was_create

Den hier gewählten Namen brauchen wir später noch. Man kann den Namen unter dem Punkt „Manage service applications“ jedoch später auch erneut nachgucken.
Im nächsten Schritt müssen die Datenbank-Verbindungsdetails angegeben werden. Auch hier kann der Datenbankname frei gewählt werden, solange noch keine Datenbank unter diesem Namen auf dem SQL Server existiert.

Nachdem diese Service Application angelegt ist, kann man mit den Word Automation Services arbeiten.

Nutzen der Word Automation Services in C#
Damit man die Word Automation Services in C# ansprechen kann, muss eine Referenz auf die zugehörige DLL hinzugefügt werden. Die DLL, welche die Klassen für die Arbeit mit den Word Automation Services beinhaltet, ist die „Microsoft.Office.Word.Server.dll“ Datei. Diese findet sich im ISAPI Ordner des SharePoint 15 Hive: „C:Program FilesCommon Filesmicrosoft sharedWeb Server Extensions15ISAPIMicrosoft.Office.Word.Server.dll“.

Nachdem diese Referenz hinzugefügt wurde, kann man beispielsweise wie folgt eine Word-Datei in eine PDF-Datei konvertieren:

    SyncConverter converter = new SyncConverter("Word Automation Services");
    converter.Settings.OutputFormat = SaveFormat.PDF;

    MemoryStream target = new MemoryStream();
    docStream.Seek(0, SeekOrigin.Begin);
    ConversionItemInfo conversionInfo = converter.Convert(docStream, target);
    docStream.Close();

    if (conversionInfo.Failed)
    {
        target.Close();
        throw new Exception(conversionInfo.ErrorMessage);
    }

Hier wird zu Beginn ein Objekt der SyncConverter Klasse erzeugt. Wie der Name schon sagt, kann diese Klasse genutzt werden, um ein Dokument synchron zu konvertieren. Da es im Projekt nötig war, dem Nutzer direkt ein Download anzubieten, habe ich mich an dieser Stelle zu einer synchronen Konvertierung entschieden.

Im Konstruktor muss dem SyncConverter der Name der zu nutzenden Word Automation Services übergeben werden. Dieser Name entspricht dem unter dem Punkt „Einrichten der Word Automation Services“ vergebenen Namen. Anschließend wird das Zielformat der Konvertierung festgelegt.

Nun ist alles bereit, um eine Konvertierung durchzuführen. Hierfür wird die Convert Methode aufgerufen mit einem Stream der Eingabedatei und einem Zielstream. In diesem Beispiel wird als Eingabe ein Memorystream mit einer Word Datei genutzt. Diese wurde mit Platzhaltern wie in dem vorhergehende Artikel Dokumenten Generierung mit dem OpenXML SDK befüllt. Aus diesem Grund muss der Eingabestream auf den Beginn zurückgesetzt werden.

Nach dem Aufruf der Convert Methode beinhaltet der MemoryStream target das PDF-Dokument. Dieser Stream kann nun beispielsweise als Response einer ASPX-Seite dem Nutzer als Download angeboten werden, in eine SharePoint Dokumentenbibliothek geschrieben werden oder einfach nur auf der Festplatte gespeichert werden.

Nähere Informationen zu der Konvertierung lassen sich aus dem Rückgabewert der Convert Methode auslesen.

Fazit
Die Word Automation Services sind ein mächtiges Werkzeug für die Arbeit mit Dokumenten im SharePoint. Neben einer hier vorgestellten synchronen Konvertierung ist es beispielsweise auch möglich, asynchrone Konvertierungen anzustoßen.

Nähere Informationen hierzu finden sich unter http://msdn.microsoft.com/en-us/library/microsoft.office.word.server.conversions%28v=office.15%29.aspx .



Diesen Blogeintrag bewerten:

5 Stimmen mit durchschnittlich 3/5 Punkten

Haben Sie Fragen zu diesem Artikel oder brauchen Sie Unterstützung?

Nehmen Sie mit uns Kontakt auf!

Wir unterstützen Sie gerne bei Ihren SharePoint-Vorhaben!


Schreibe einen Kommentar

Kontakt.
Lassen Sie sich von uns beraten
Wir freuen uns über Ihr Interesse an unseren Leistungen. Hinterlassen Sie
uns Ihren Namen, Ihre Telefonnummer und E-Mail Adresse – wir melden
uns schnellstmöglich bei Ihnen.
Kontakt aufnehmen