2017-06-24 2 views
3

Ich erstelle eine PDF-Datei mit iTextSharp in einem Windows-Formular mit C#, ich möchte ein Bild zu der Datei aus dem Ordner Ressource (Bildname: LOGO.png) hinzufügen. Ich habe eine Klasse ExportToPdf.cs und diese Klasse befindet sich im Ordner App_Class. Ich verwende den folgenden Code. Kann jemand bitte helfen.iTextSharp pdf Bild von Ressource Datei

internal static void exportEchoReport(Patient p) 
{ 
    using (var ms = new MemoryStream()) 
    { 
     using (var doc1 = new iTextSharp.text.Document(PageSize.A4, 50, 50, 15, 15)) 
     { 
      try 
      { 
       PdfWriter writer = PdfWriter.GetInstance(doc1, new FileStream("echo.pdf", FileMode.Create)); 
       doc1.Open(); 

       string imagePath = // I want to use this image LOGO.png (Resources.LOGO) 
       iTextSharp.text.Image logoImg = iTextSharp.text.Image.GetInstance(imagePath); 

       PdfPTable headerTable = createTable(logoImg, p); 
       doc1.Add(headerTable); 
      } 
      catch (Exception ex) 
      { 
      } 
      finally 
      { 
       doc1.Close(); 
      } 
     } 
     System.Diagnostics.Process.Start("echo.pdf"); 
    } 
} 

Antwort

3

Visual Studio macht IMHO die fragwürdige Entscheidung Bilddateien als System.Drawing.Bitmap zu speichern, (im Code oben Resources.LOGO) anstelle von byte[] wie es mit anderen Binärdateien der Fall ist. Sie müssen also eine der überladenen Image.GetInstance() Methoden verwenden. Hier ist ein einfaches Beispiel:

using (var stream = new MemoryStream()) 
{ 
    using (var document = new Document()) 
    { 
     PdfWriter.GetInstance(document, stream); 
     document.Open(); 
     var image = Image.GetInstance(
      Resources.LOGO, System.Drawing.Imaging.ImageFormat.Png 
     ); 
     document.Add(image); 
    } 
    File.WriteAllBytes(OUTPUT_FILE, stream.ToArray()); 
}