Zum Hauptinhalt wechseln

OBA Blog

  

OBA Blog > Kategorien
OBA Sample Application Toolkit verfügbar
Die OBA Samples für Entwickler sind verfügbar.
 
Bisher sind 2 Versionen für SAP und eine für PeopleSoft ist bereits zum Download verfügbar. Eine für SAP und Siebel soll im Juni folgen.
 
Hier der Link:
Generieren von Word-Dokumente mit Aspose

Zur Generierung von Word-Dokumenten kann die Funktionsbibliothekt von Aspose (Aspose.dll; http://aspose.com/) genutzt werden. Diese unterstützt u.A. auch das Einbinden von Bildern.

 

Beispiel:

Ziel ist es, ein Bild aus einer Sharepoint-Dokumentenbibliothek in ein mit Aspose generiertes Word-Dokument einzubinden.

 

Stolpersteine:

  • Wenn mit Tabellen gearbeitet wird, sollte (ähnlich der Html-Progammierung mit Tabellen) eine saubere Tabellenstruktur eingehalten werden. Sonst passiert es, dass das Bild irgendwo erscheint – nur nicht dort, wo man es erwartet.
  • Berechtigungen des Sharepoints berücksichtigen. Im Quellcodebeispiel wird das Bild mit Adminrechten gelesen. (Sonst nicht über einen 401-Fehler wundern.)
  • Reihenfolge beim Schließen des Streams beachten. Stream erst schließen, wenn die Image-Instanz ins Word-Dokument geschrieben wurde.
  • Nicht auf alle Properties der SPFile-Instanz verlassen. Das Property „Exists“ hat bei mir bspw. immer false zurückgegeben, auch wenn das Bild vorhanden war.
  • Um sicherzustellen, dass in der SPFile-Instanz wirklich Daten hinterlegt sind, einfach einen weiteren Try-Catch-Block drumherum legen und ggf. auswerten.

 

Quellcode:

                Uri imageUri = new Uri(“http://mySharepoint.com/mySite/myDocumentLibrary/example.jpg”);

    SPSite s = null;

                SPWeb w = null;

                Guid id;

                SPFile f = null;

                Stream str = null;

                Image img = null;               

                try

                {

                     //Bild aus Sharepoint holen

                    s = new SPSite(imageUri.ToString());

                    id = s.ID;

                    s.Close();

                    SPSecurity.RunWithElevatedPrivileges(delegate()

                    {

                        s = new SPSite(id);

                        w = s.OpenWeb();

                        f = w.GetFile(imageUri.ToString());

                        if (f == null)

                        {

                            img = null;

                        }

                        else

                        {

                            try

                            {

                                str = f.OpenBinaryStream();

                                img = System.Drawing.Image.FromStream(str);

                            }

                            catch (Exception ex)

                            {

                                img = null;

                            }

                        }

                    });

 

                    //now insert the pic in the word-document

                    Document doc = new Document();

                    doc.RemoveAllChildren();

                    DocumentBuilder builder = new DocumentBuilder(doc);

                   

                    builder.RowFormat.ClearCellPadding();

                    builder.CellFormat.ClearFormatting();

                    if (img == null)

                    {

                        builder.RowFormat.Height = imgHeight;

                       builder.RowFormat.HeightRule = HeightRule.Exactly;

                       builder.Font.Name = "Arial";

                       builder.Font.Size = 10;

                       builder.Font.Color = System.Drawing.Color.Black;

                       builder.Writeln("Es ist kein Bild vorhanden");                   

                    }

                    else

                    {

                        builder.RowFormat.Height = img.Height;

                        builder.RowFormat.HeightRule = HeightRule.Exactly;

                        builder.InsertImage(img, img.Width, img.Height);

                        img = null;

                    }

                    builder.EndRow();

                }

                catch (Exception ex)

                {

                    throw new Exception("Es ist ein unerwarteter Fehler bei der Verarbeitung "+

                        "des Fotos '"+imageUri.ToString()+"' aufgetreten!", ex);

                }

                finally

                {

                    if (str != null)

                        str.Close();

                    if (f != null)

                        f = null;

                    if (w != null)

                        w.Close();

                    if (s != null)

                        s.Close();

                }