Ich wollte PDFsharp und MigraDoc verwenden, um PDFs zu erzeugen. Bis jetzt funktioniert alles perfekt.PDFsharp MigraDoc Runtime generierte Bitmap zur Tabellenzelle hinzufügen
Jetzt habe ich eine Idee, um eine Bitmap während der Laufzeit zu erstellen und zu einer meiner Tabellenzellen hinzuzufügen.
Ich habe gelesen, dass es möglich ist, Bitmaps von Ressource so hinzuzufügen, ohne sie auf der Festplatte zu haben.
See: http://www.pdfsharp.net/wiki/MigraDoc_FilelessImages.ashx
Das ist mein Versuch, es zu meinem kleinen Projekt anzupassen ist:
-Code für die Bitmap zu erstellen:
Bitmap GreenDot = new Bitmap(32,32);
Graphics GreenDotGraphics = Graphics.FromImage(GreenDot);
GreenDotGraphics.FillEllipse(Brushes.Green,0,0,32,32);
//The next step will be converting the Bitmap to an byte[]
var byteGreenDot = ImageToByte(GreenDot);
//Now converting it to string as seen in the WikiPage
string stringGreenDot = Convert.ToBase64String(byteGreenDot);
string FinalGreenDot = "base64:"+ stringGreenDot;
//Now creating a table
.
.
.
cell = MyRow.Cell[1];
cell.AddImage(FinalGreenDot);
.
.
.
-Code für Bitmap-Umwandlung [] auf Byte
public static byte[] ImageToByte(System.Drawing.Image img)
{
using(var ms = new MemoryStream())
{
img.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp);
return ms.ToArray();
}
}
Wie ich den Code ausführen, werde ich eine Warnung mit dem Hinweis "Warnung : Bild 'base64: Qk02E [...] ==' nicht gefunden. ' (Die Base64-Zeichenfolge wurde für diesen Beitrag abgeschnitten).
Ich vermute, dass ich es nicht korrekt in Byte [] konvertieren.
Kann mich jemand auf die richtige Spur bringen?
Ist der Datentyp des ersten Parameters von 'AddImage()' nicht definiert als 'string'? Dies würde die Fehlermeldung erklären, da das Bildobjekt implizit in eine Zeichenkette über 'ToString()' konvertiert wird. In diesem Fall müssen Sie einen Dateinamen anstelle eines Streams angeben (zumindest in meinem Projekt muss ich Dateinamen übergeben). – ViRuSTriNiTy
Bitte lesen Sie den verlinkten Wiki-Artikel. – SUM
Ja, und was sagt der Artikel? 'section.AddImage (imageFilename);' - Siehst du das Wort 'Dateiname' im Variablennamen? Deshalb habe ich geschrieben, dass Sie einen Dateinamen weitergeben müssen. – ViRuSTriNiTy