1414using System ;
1515using System . Collections . Generic ;
1616using System . Drawing ;
17+ using System . Drawing . Imaging ;
1718using System . IO ;
1819using System . Threading ;
1920using TheArtOfDev . HtmlRenderer . Core . Entities ;
@@ -71,18 +72,11 @@ public static Image TryLoadResourceImage(string src)
7172 public static XImage TryLoadResourceXImage ( string src )
7273 {
7374 var img = TryLoadResourceImage ( src ) ;
74- XImage xImg ;
7575
7676 if ( img == null )
7777 return null ;
7878
79- using ( var ms = new MemoryStream ( ) )
80- {
81- img . Save ( ms , img . RawFormat ) ;
82- xImg = img != null ? XImage . FromStream ( ms ) : null ;
83- }
84-
85- return xImg ;
79+ return CreatePdfSharpImage ( img ) ;
8680 }
8781
8882 /// <summary>
@@ -107,20 +101,10 @@ public static void OnImageLoadPdfSharp(object sender, HtmlImageLoadEventArgs e)
107101 public static void ImageLoad ( HtmlImageLoadEventArgs e , bool pdfSharp )
108102 {
109103 var img = TryLoadResourceImage ( e . Src ) ;
110- XImage xImg = null ;
111-
112- if ( img != null )
113- {
114- using ( var ms = new MemoryStream ( ) )
115- {
116- img . Save ( ms , img . RawFormat ) ;
117- xImg = img != null ? XImage . FromStream ( ms ) : null ;
118- }
119- }
120104
121105 object imgObj ;
122106 if ( pdfSharp )
123- imgObj = xImg ;
107+ imgObj = img != null ? CreatePdfSharpImage ( img ) : null ;
124108 else
125109 imgObj = img ;
126110
@@ -157,5 +141,17 @@ public static void ImageLoad(HtmlImageLoadEventArgs e, bool pdfSharp)
157141 if ( img != null )
158142 e . Callback ( imgObj ) ;
159143 }
144+
145+ /// <summary>
146+ /// Convert image to PNG before creating <see cref="XImage"/> because PdfSharp does not support GIF streams.
147+ /// </summary>
148+ private static XImage CreatePdfSharpImage ( Image img )
149+ {
150+ using ( var ms = new MemoryStream ( ) )
151+ {
152+ img . Save ( ms , ImageFormat . Png ) ;
153+ return XImage . FromStream ( ms ) ;
154+ }
155+ }
160156 }
161157}
0 commit comments