Skip to content

Commit 78cfb82

Browse files
authored
Merge pull request #6 from SyncfusionExamples/EJ2-70010-Metafile-image
Resolve Image not loading issue while Metafile image parsed.
2 parents d614715 + 7dc3350 commit 78cfb82

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

src/ej2-documenteditor-server/Controllers/DocumentEditorController.cs

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
using WDocument = Syncfusion.DocIO.DLS.WordDocument;
1414
using WFormatType = Syncfusion.DocIO.FormatType;
1515
using Syncfusion.EJ2.SpellChecker;
16-
using EJ2DocumentEditorServer;
1716

1817
namespace EJ2DocumentEditorServer.Controllers
1918
{
@@ -44,12 +43,47 @@ public string Import(IFormCollection data)
4443
file.CopyTo(stream);
4544
stream.Position = 0;
4645

46+
//Hooks MetafileImageParsed event.
47+
WordDocument.MetafileImageParsed += OnMetafileImageParsed;
4748
WordDocument document = WordDocument.Load(stream, GetFormatType(type.ToLower()));
49+
//Unhooks MetafileImageParsed event.
50+
WordDocument.MetafileImageParsed -= OnMetafileImageParsed;
51+
4852
string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
4953
document.Dispose();
5054
return json;
5155
}
5256

57+
//Converts Metafile to raster image.
58+
private static void OnMetafileImageParsed(object sender, MetafileImageParsedEventArgs args)
59+
{
60+
//You can write your own method definition for converting metafile to raster image using any third-party image converter.
61+
args.ImageStream = ConvertMetafileToRasterImage(args.MetafileStream);
62+
}
63+
64+
private static Stream ConvertMetafileToRasterImage(Stream ImageStream)
65+
{
66+
//Here we are loading a default raster image as fallback.
67+
Stream imgStream = GetManifestResourceStream("ImageNotFound.jpg");
68+
return imgStream;
69+
//To do : Write your own logic for converting metafile to raster image using any third-party image converter(Syncfusion doesn't provide any image converter).
70+
}
71+
72+
private static Stream GetManifestResourceStream(string fileName)
73+
{
74+
System.Reflection.Assembly execAssembly = typeof(WDocument).Assembly;
75+
string[] resourceNames = execAssembly.GetManifestResourceNames();
76+
foreach (string resourceName in resourceNames)
77+
{
78+
if (resourceName.EndsWith("." + fileName))
79+
{
80+
fileName = resourceName;
81+
break;
82+
}
83+
}
84+
return execAssembly.GetManifestResourceStream(fileName);
85+
}
86+
5387
[AcceptVerbs("Post")]
5488
[HttpPost]
5589
[EnableCors("AllowAllOrigins")]
@@ -118,7 +152,11 @@ public string SystemClipboard([FromBody]CustomParameter param)
118152
{
119153
try
120154
{
155+
//Hooks MetafileImageParsed event.
156+
WordDocument.MetafileImageParsed += OnMetafileImageParsed;
121157
WordDocument document = WordDocument.LoadString(param.content, GetFormatType(param.type.ToLower()));
158+
//Unhooks MetafileImageParsed event.
159+
WordDocument.MetafileImageParsed -= OnMetafileImageParsed;
122160
string json = Newtonsoft.Json.JsonConvert.SerializeObject(document);
123161
document.Dispose();
124162
return json;

0 commit comments

Comments
 (0)