DataTable in pdf exportieren mit MigraDoc - Hilfe bei Übersetzung von C# in vb.net

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von DerSmurf.

    DataTable in pdf exportieren mit MigraDoc - Hilfe bei Übersetzung von C# in vb.net

    Hallo ihr lieben
    Ich versuche mein DataTable in eine pdf zu exportieren. Ich möchte in meinem Bestellprogramm alle bestellten Artikel als pdf ausgeben, mit Header und Footer.
    Dazu habe ich eine Anleitung gefunden, wie ich dies mit MigraDoc bewerkstellige.
    codeproject.com/Tips/355353/Exporting-a-DataTable-to-PDF
    Mein Problem ist, dass ich so ziemlich alles was mit MigraDoc zu tun hat, nur in C# finde. Beim Übersetzen in vb.Net tue ich mich sehr schwer.

    Ich habe hierzu mal eine kleine Beispielanwendung gebastelt. Wie gesagt das meiste habe ich geschafft (mit Übersetzern) in vb.net umzuwandeln, allerdings gibt es einige Ausdrücke (echt viele- deswegen bitte ich um Download des Projektes), die mir VS ankringelt.
    Falls jemand Erfahrung mit MigraDoc in vb.Net hat, oder eine alternative zu MigraDoc, mit dem mein Vorhaben zu realisieren ist, bitte ich um Hilfe.
    Dateien
    • pdf Test.zip

      (1,45 MB, 77 mal heruntergeladen, zuletzt: )
    Also wenn es um die paar Fehler geht, die in Form1.vb in der Sub CreateDocument geht, machst Du Dir es unnötig schwer. z.B. sagt Dir IntelliSense, dass table.SetEdge als 5. Parameter eine Sache vom Typ Tables.Edge will. Einfach aus dem Edge.Box ein Tables.Edge.Box machen und fertig. Genauso mit den VerticalAlignments, Column und Row. Und das mit den Farben: Naja, da kannste selber krativ werden, welche Farbe Du da haben willst. Nimm dafür z.B. Color.FromRgb(100, 50, 200), da Color mehrdeutig ist (das normale Drawing.Color geht nicht). Und beim Konstruktor entsprechend IntelliSense-Hinweis den 2. Parameter weglassen, da der veraltet ist, wie IntelliSense bzw. der MigraDoc-Entwickler als Prozedur-Hinweis hinterlegt hat.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Also ich habe es hinbekommen, dass der Code läuft.
    Ich verstehe zwar noch nicht alles, aber das kann ich jetzt schrittweise durchgehen und rumtesten.

    Jedoch scheitere ich jetzt am Header.
    Ich möchte in der "Headerzeile" link, in der Mitte und rechts Daten schreiben. Das versuche ich so:

    VB.NET-Quellcode

    1. Dim section As Section = document.AddSection()
    2. ''''''''''''Header links''''''''''''''''''''''''''
    3. Dim paragraphheader As Paragraph = section.Headers.Primary.AddParagraph()
    4. paragraphheader.AddText("Header left")
    5. paragraphheader.Format.Font.Size = 9
    6. paragraphheader.Format.Alignment = ParagraphAlignment.Left
    7. ''''''''''''Header mitte''''''''''''''''''''''''''
    8. Dim paragraphheadercenter As Paragraph = section.Headers.Primary.AddParagraph()
    9. paragraphheadercenter.AddText("Header mitte")
    10. paragraphheadercenter.Format.Font.Size = 9
    11. paragraphheadercenter.Format.Alignment = ParagraphAlignment.Center


    Dieser Code schreibt mir den Text an die richtigen Stellen. Allerdings mit einem Zeilenumbruch zwischen "Header left" und "Header mitte". Das ganze soll aber in der gleichen Zeile stehen.
    Ich vermute, dass dieser Zeilenumbruch hier entsteht: Dim paragraphheadercenter As Paragraph = section.Headers.Primary.AddParagraph()
    Also habe ich versuche mein "paragraphheader" mit dem Text "Header Mitte" zu erweitern und diesen mittig auszugeben.
    Dann ist jedoch der gesamte Text - also "Header links" und "Header Mitte" zentriert :(
    Ich geb mal an stackoverflow weiter, wo mit TabStopps gearbeitet wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.