2017-06-24 3 views
3

Je crée un fichier pdf en utilisant iTextSharp dans un formulaire Windows avec C#, je veux ajouter une image dans le fichier à partir du dossier de ressources (nom de l'image: LOGO.png). J'ai une classe ExportToPdf.cs et cette classe est dans le dossier App_Class. J'utilise le code ci-dessous. Quelqu'un peut-il aider s'il vous plait.iTextSharp image pdf du fichier de ressources

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"); 
    } 
} 

Répondre

3

Visual Studio rend à mon humble avis la décision douteuse pour stocker des fichiers d'image comme System.Drawing.Bitmap, (dans votre code ci-dessus Resources.LOGO) au lieu de byte[] comme il le fait avec d'autres fichiers binaires. Vous devez donc utiliser l'une des méthodes surchargées Image.GetInstance(). Voici un exemple simple:

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()); 
}