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“:
Hier muss nun sichergestellt werden, dass die Word Automation Services gestartet sind:
Anschließend wählen wir unter Application Management den Punkt „Manage service applications“ aus:
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“:
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:
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 .
Kategorien: Allgemein, SharePoint, Technical
Schlagwörter: JavaScript, SharePoint, SharePoint 2013
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!