|
@@ -18,6 +18,7 @@ using DocumentFormat.OpenXml.Drawing;
|
|
using DocumentFormat.OpenXml.Drawing.Charts;
|
|
using DocumentFormat.OpenXml.Drawing.Charts;
|
|
using DocumentFormat.OpenXml.Office2010.Word.DrawingShape;
|
|
using DocumentFormat.OpenXml.Office2010.Word.DrawingShape;
|
|
using DocumentFormat.OpenXml.Packaging;
|
|
using DocumentFormat.OpenXml.Packaging;
|
|
|
|
+using HTEXLib.COMM.Helpers;
|
|
using HTEXLib.DOCX.OpenXmlTool;
|
|
using HTEXLib.DOCX.OpenXmlTool;
|
|
using HTEXLib.Helpers;
|
|
using HTEXLib.Helpers;
|
|
using HTEXLib.Helpers.ShapeHelpers;
|
|
using HTEXLib.Helpers.ShapeHelpers;
|
|
@@ -3761,14 +3762,16 @@ namespace OpenXmlPowerTools
|
|
var contentType = imagePart.ContentType;
|
|
var contentType = imagePart.ContentType;
|
|
if (!ImageContentTypes.Contains(contentType))
|
|
if (!ImageContentTypes.Contains(contentType))
|
|
return null;
|
|
return null;
|
|
|
|
+ var Stream = imagePart.GetStream();
|
|
try {
|
|
try {
|
|
|
|
+
|
|
if (contentType == "image/x-wmf"|| contentType == "image/x-emf")
|
|
if (contentType == "image/x-wmf"|| contentType == "image/x-emf")
|
|
{
|
|
{
|
|
- return ProcessWmf(imagePart.GetStream(), contentType, element, hyperlinkUri, imageHandler);
|
|
|
|
|
|
+ return ProcessWmf(Stream, contentType, element, hyperlinkUri, imageHandler);
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
- using (var partStream = imagePart.GetStream())
|
|
|
|
- using (var bitmap = new Bitmap(partStream))
|
|
|
|
|
|
+
|
|
|
|
+ using (var bitmap = new Bitmap(Stream))
|
|
{
|
|
{
|
|
if (extentCx != null && extentCy != null)
|
|
if (extentCx != null && extentCy != null)
|
|
{
|
|
{
|
|
@@ -3817,12 +3820,12 @@ namespace OpenXmlPowerTools
|
|
}
|
|
}
|
|
catch
|
|
catch
|
|
{
|
|
{
|
|
- Stream stream = imagePart.GetStream();
|
|
|
|
|
|
+
|
|
XElement img = null;
|
|
XElement img = null;
|
|
- byte[] bytes = new byte[stream.Length];
|
|
|
|
- stream.Read(bytes, 0, bytes.Length);
|
|
|
|
|
|
+ byte[] bytes = new byte[Stream.Length];
|
|
|
|
+ Stream.Read(bytes, 0, bytes.Length);
|
|
// 设置当前流的位置为流的开始
|
|
// 设置当前流的位置为流的开始
|
|
- stream.Seek(0, SeekOrigin.Begin);
|
|
|
|
|
|
+ Stream.Seek(0, SeekOrigin.Begin);
|
|
string url = System.Convert.ToBase64String(bytes);
|
|
string url = System.Convert.ToBase64String(bytes);
|
|
img = new XElement(Xhtml.img,
|
|
img = new XElement(Xhtml.img,
|
|
new XAttribute(NoNamespace.src, "data:" + contentType + ";base64," + url),
|
|
new XAttribute(NoNamespace.src, "data:" + contentType + ";base64," + url),
|
|
@@ -3850,11 +3853,24 @@ namespace OpenXmlPowerTools
|
|
else if (contentType.Equals("image/x-emf"))
|
|
else if (contentType.Equals("image/x-emf"))
|
|
{
|
|
{
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
- Metafile inFile = new Metafile(stream);
|
|
|
|
- //Metafile outFile = new Metafile(memoryStream, Graphics.FromHwnd(IntPtr.Zero).GetHdc(), EmfType.EmfOnly);
|
|
|
|
- inFile.Save(memoryStream, ImageFormat.Png);
|
|
|
|
- var ba = memoryStream.ToArray();
|
|
|
|
- mathxml = System.Convert.ToBase64String(ba);
|
|
|
|
|
|
+ //Metafile inFile = new Metafile(stream);
|
|
|
|
+ ////Metafile outFile = new Metafile(memoryStream, Graphics.FromHwnd(IntPtr.Zero).GetHdc(), EmfType.EmfOnly);
|
|
|
|
+ //inFile.Save(memoryStream, ImageFormat.Png);
|
|
|
|
+ //var ba = memoryStream.ToArray();
|
|
|
|
+ //mathxml = System.Convert.ToBase64String(ba);
|
|
|
|
+
|
|
|
|
+ //System.Drawing.Bitmap inFile = new System.Drawing.Bitmap(stream);
|
|
|
|
+ //Graphics graphics = Graphics.FromImage(inFile);
|
|
|
|
+ //graphics.Save();
|
|
|
|
+ //graphics.Dispose();
|
|
|
|
+ //inFile.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
|
|
|
|
+ //byte[] arr = new byte[memoryStream.Length];
|
|
|
|
+ //memoryStream.Position = 0;
|
|
|
|
+ //memoryStream.Read(arr, 0, (int)memoryStream.Length);
|
|
|
|
+ //memoryStream.Close();
|
|
|
|
+ //memoryStream.Dispose();
|
|
|
|
+ //mathxml = Convert.ToBase64String(arr);
|
|
|
|
+ mathxml = "EmfBase64ConvertError";
|
|
}
|
|
}
|
|
try
|
|
try
|
|
{
|
|
{
|
|
@@ -3930,13 +3946,50 @@ namespace OpenXmlPowerTools
|
|
parser.Parse(stream, gdi);
|
|
parser.Parse(stream, gdi);
|
|
mathxml = gdi.Document.InnerXml;
|
|
mathxml = gdi.Document.InnerXml;
|
|
} else if (pp.OpenXmlPart.ContentType.Equals("image/x-emf")) {
|
|
} else if (pp.OpenXmlPart.ContentType.Equals("image/x-emf")) {
|
|
|
|
+ ////var image= SixLabors.ImageSharp.Image.Load(pp.OpenXmlPart.GetStream());
|
|
|
|
+ ////image.Save(memoryStream, new SixLabors.ImageSharp.Formats.Png.PngEncoder());
|
|
|
|
+
|
|
|
|
+ //var stm= pp.OpenXmlPart.GetStream();
|
|
|
|
+ //var parser = new EMF2StringParser();
|
|
|
|
+ //parser.LineBreakCandidates = new[] { EmfPlusRecordType.EmfSelectObject, EmfPlusRecordType.EmfDeleteObject };
|
|
|
|
+ //parser.SpaceCandidates = new[] { EmfPlusRecordType.EmfIntersectClipRect };
|
|
|
|
+ //Metafile inFile = new Metafile(stm);
|
|
|
|
+ //parser.LoadMetaFile(inFile);
|
|
|
|
+ //parser.IsParseFailedLoggingEnabled = true;
|
|
|
|
+ //var expected = parser.GetCombinedStringFromLoadedMetaFile();
|
|
|
|
+
|
|
|
|
+ ////MemoryStream memoryStream = new MemoryStream();
|
|
|
|
+ ////byte[] bytes = new byte[stm.Length];
|
|
|
|
+ ////stm.Read(bytes, 0, bytes.Length);
|
|
|
|
+ ////stm.Seek(0, SeekOrigin.Begin);
|
|
|
|
+ ////
|
|
|
|
+
|
|
|
|
+ ////Metafile outFile = new Metafile(memoryStream, Graphics.FromHwnd(IntPtr.Zero).GetHdc(), EmfType.EmfOnly);
|
|
|
|
+ //// inFile.Save(memoryStream, ImageFormat.Png);
|
|
|
|
+ ////var ba = memoryStream.ToArray();
|
|
|
|
+ //application.EnablePartialTrustCode = true;
|
|
|
|
+ //mathxml = expected;
|
|
|
|
+
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
- Metafile inFile = new Metafile(pp.OpenXmlPart.GetStream());
|
|
|
|
- //Metafile outFile = new Metafile(memoryStream, Graphics.FromHwnd(IntPtr.Zero).GetHdc(), EmfType.EmfOnly);
|
|
|
|
- inFile.Save(memoryStream, ImageFormat.Png);
|
|
|
|
- var ba = memoryStream.ToArray();
|
|
|
|
- mathxml = System.Convert.ToBase64String(ba);
|
|
|
|
-
|
|
|
|
|
|
+ //Metafile inFile = new Metafile(pp.OpenXmlPart.GetStream());
|
|
|
|
+ ////Metafile outFile = new Metafile(memoryStream, Graphics.FromHwnd(IntPtr.Zero).GetHdc(), EmfType.EmfOnly);
|
|
|
|
+ //inFile.Save(memoryStream, ImageFormat.Png);
|
|
|
|
+ //var ba = memoryStream.ToArray();
|
|
|
|
+ //mathxml = System.Convert.ToBase64String(ba);
|
|
|
|
+
|
|
|
|
+ //System.Drawing.Bitmap inFile = new System.Drawing.Bitmap(pp.OpenXmlPart.GetStream());
|
|
|
|
+ //Graphics graphics = Graphics.FromImage(inFile);
|
|
|
|
+ //graphics.Save();
|
|
|
|
+ //graphics.Dispose();
|
|
|
|
+ //inFile.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
|
|
|
|
+ //byte[] arr = new byte[memoryStream.Length];
|
|
|
|
+ //memoryStream.Position = 0;
|
|
|
|
+ //memoryStream.Read(arr, 0, (int)memoryStream.Length);
|
|
|
|
+ //memoryStream.Close();
|
|
|
|
+ //memoryStream.Dispose();
|
|
|
|
+ // mathxml = Convert.ToBase64String(arr);
|
|
|
|
+ mathxml = "EmfBase64ConvertError";
|
|
|
|
+
|
|
}
|
|
}
|
|
string hyperlinkUri = null;
|
|
string hyperlinkUri = null;
|
|
var contentType = pp.OpenXmlPart.ContentType;
|
|
var contentType = pp.OpenXmlPart.ContentType;
|