22using OpenXmlPowerTools ;
33using OpenXmlPowerTools . OpenXMLWordprocessingMLToHtmlConverter ;
44using System ;
5+ using System . Collections . Generic ;
56using System . IO ;
67using System . Linq ;
78using System . Threading . Tasks ;
@@ -55,10 +56,27 @@ public static Task<Stream> ConvertToHtmlAsync(Stream sourceOpenXml, string fallb
5556 throw new ArgumentNullException ( nameof ( sourceOpenXml ) ) ;
5657 }
5758
58- return ConvertToHtmlInternalAsync ( sourceOpenXml , fallbackPageTitle ) ;
59+ return ConvertToHtmlInternalAsync ( sourceOpenXml , fallbackPageTitle , new ImageHandler ( ) ) ;
5960 }
6061
61- private static async Task < Stream > ConvertToHtmlInternalAsync ( Stream sourceOpenXml , string fallbackPageTitle )
62+ /// <summary>
63+ /// Converts docx to html
64+ /// </summary>
65+ /// <param name="sourceOpenXml"></param>
66+ /// <param name="fallbackPageTitle"></param>
67+ /// <param name="images"></param>
68+ /// <returns>selfContainedHtml</returns>
69+ public static Task < Stream > ConvertToHtmlAsync ( Stream sourceOpenXml , string fallbackPageTitle , IDictionary < string , byte [ ] > images )
70+ {
71+ if ( sourceOpenXml == null )
72+ {
73+ throw new ArgumentNullException ( nameof ( sourceOpenXml ) ) ;
74+ }
75+
76+ return ConvertToHtmlInternalAsync ( sourceOpenXml , fallbackPageTitle , new ExportImageHandler ( images ) ) ;
77+ }
78+
79+ private static async Task < Stream > ConvertToHtmlInternalAsync ( Stream sourceOpenXml , string fallbackPageTitle , IImageHandler imageHandler )
6280 {
6381 using var memoryStream = new MemoryStream ( ) ;
6482 await sourceOpenXml . CopyToAsync ( memoryStream ) . ConfigureAwait ( false ) ;
@@ -69,17 +87,17 @@ private static async Task<Stream> ConvertToHtmlInternalAsync(Stream sourceOpenXm
6987 var computedPageTitle = coreFilePropertiesPart ? . GetXDocument ( ) . Descendants ( DC . title ) . FirstOrDefault ( ) ;
7088 var pageTitle = string . IsNullOrEmpty ( computedPageTitle ? . Value ) ? fallbackPageTitle : computedPageTitle ! . Value ;
7189
72- var htmlElement = WmlToHtmlConverter . ConvertToHtml ( wordProcessingDocument , CreateHtmlConverterSettings ( pageTitle ) ) ;
90+ var htmlElement = WmlToHtmlConverter . ConvertToHtml ( wordProcessingDocument , CreateHtmlConverterSettings ( pageTitle , imageHandler ) ) ;
7391
7492 var memoryStreamHtml = new MemoryStream ( ) ;
7593 htmlElement . Save ( memoryStreamHtml ) ;
7694 memoryStreamHtml . Position = 0 ;
7795 return memoryStreamHtml ;
7896 }
7997
80- private static WmlToHtmlConverterSettings CreateHtmlConverterSettings ( string pageTitle )
98+ private static WmlToHtmlConverterSettings CreateHtmlConverterSettings ( string pageTitle , IImageHandler imageHandler )
8199 {
82- var settings = new WmlToHtmlConverterSettings ( pageTitle , new ImageHandler ( ) , new TextSymbolToUnicodeHandler ( ) , new SymbolHandler ( ) , new PageBreakHandler ( new BreakHandler ( ) ) , true , string . Empty , "@page { size: A4 } body { margin: 1cm auto; max-width: 20cm; padding: 0; }" , "Codeuctivity-" ) ;
100+ var settings = new WmlToHtmlConverterSettings ( pageTitle , imageHandler , new TextSymbolToUnicodeHandler ( ) , new SymbolHandler ( ) , new PageBreakHandler ( new BreakHandler ( ) ) , true , string . Empty , "@page { size: A4 } body { margin: 1cm auto; max-width: 20cm; padding: 0; }" , "Codeuctivity-" ) ;
83101
84102 return settings ;
85103 }
0 commit comments