diff --git a/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document.sln b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document.sln new file mode 100644 index 00000000..2dfe8d04 --- /dev/null +++ b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36908.2 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Convert_EMF-images_to_PNG_in_Word-document", "Convert_EMF-images_to_PNG_in_Word-document\Convert_EMF-images_to_PNG_in_Word-document.csproj", "{0FB638DB-2793-4FB6-B1B3-18F786EA8EF5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0FB638DB-2793-4FB6-B1B3-18F786EA8EF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0FB638DB-2793-4FB6-B1B3-18F786EA8EF5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0FB638DB-2793-4FB6-B1B3-18F786EA8EF5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0FB638DB-2793-4FB6-B1B3-18F786EA8EF5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3AC4FA9F-473F-4350-B422-A0C4691A8EA6} + EndGlobalSection +EndGlobal diff --git a/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Convert_EMF-images_to_PNG_in_Word-document.csproj b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Convert_EMF-images_to_PNG_in_Word-document.csproj new file mode 100644 index 00000000..8ac90f58 --- /dev/null +++ b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Convert_EMF-images_to_PNG_in_Word-document.csproj @@ -0,0 +1,23 @@ + + + + Exe + net8.0 + Convert_EMF_images_to_PNG_in_Word_document + enable + enable + + + + + + + + + Always + + + Always + + + diff --git a/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Data/Input.docx b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Data/Input.docx new file mode 100644 index 00000000..42d32918 Binary files /dev/null and b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Data/Input.docx differ diff --git a/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Output/gitkeep.txt b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Output/gitkeep.txt new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Output/gitkeep.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Program.cs b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Program.cs new file mode 100644 index 00000000..e09fb0c6 --- /dev/null +++ b/HTML-conversions/Convert_EMF-images_to_PNG_in_Word-document/.NET/Convert_EMF-images_to_PNG_in_Word-document/Program.cs @@ -0,0 +1,57 @@ +using SkiaSharp; +using Syncfusion.DocIO; +using Syncfusion.DocIO.DLS; +using Syncfusion.Drawing; +using Syncfusion.Metafile; + + + +using (FileStream inputStream = new FileStream(Path.GetFullPath(@"Data/Input.docx", FileMode.Open, FileAccess.ReadWrite)) +{ + // Opens an input Word template. + using (WordDocument document = new WordDocument(inputStream, FormatType.Docx)) + { + // Find all picture in the document. + List images = document.FindAllItemsByProperty(EntityType.Picture, null, null); + // Iterate through each image in the document. + foreach (Entity entity in images) + { + WPicture picture = entity as WPicture; + float width = picture.Width; + float height = picture.Height; + + // Convert the image bytes into a memory stream. + MemoryStream stream = new MemoryStream(picture.ImageBytes); + // Create an Image object from the memory stream. + Image image = Image.FromStream(stream); + // Check if the image format is EMF. + if (image.RawFormat.Equals(ImageFormat.Emf)) + { + MemoryStream imageByteStream = new MemoryStream(picture.ImageBytes); + //Create a new instance for the MetafileRenderer + MetafileRenderer renderer = new MetafileRenderer(); + //Convert the Metafile to SKBitmap Image. + SKBitmap skBitmap = renderer.ConvertToImage(imageByteStream); + //Save the image as stream + using (SKImage skImage = SKImage.FromBitmap(skBitmap)) + using (SKData data = skImage.Encode(SKEncodedImageFormat.Png, 100)) + + using (MemoryStream pngStream = new MemoryStream()) + { + data.SaveTo(pngStream); + pngStream.Position = 0; + picture.LoadImage(pngStream); + picture.Height = height; + picture.Width = width; + } + } + } + // Save the modified document to the specified output file. + using (FileStream outputStream = new FileStream(Path.GetFullPath(@"Output/Result.html"), FileMode.Create, FileAccess.Write)) + { + document.Save(outputStream, FormatType.Html); + } + } +} + +