|
@@ -78,15 +78,18 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
throw new ArgumentNullException("presentationDocument");
|
|
|
}
|
|
|
var thumbnailPart = presentationDocument.ThumbnailPart;
|
|
|
- var contentType = thumbnailPart.ContentType;
|
|
|
+
|
|
|
string base64 = "";
|
|
|
- using (var stream = thumbnailPart.GetStream())
|
|
|
- {
|
|
|
- byte[] buffer = new byte[stream.Length];
|
|
|
- stream.Read(buffer, 0, buffer.Length);
|
|
|
- stream.Close();
|
|
|
- base64 = System.Convert.ToBase64String(buffer);
|
|
|
- base64 = "data:" + contentType + ";base64," + base64;
|
|
|
+ if (thumbnailPart != null) {
|
|
|
+ var contentType = thumbnailPart.ContentType;
|
|
|
+ using (var stream = thumbnailPart.GetStream())
|
|
|
+ {
|
|
|
+ byte[] buffer = new byte[stream.Length];
|
|
|
+ stream.Read(buffer, 0, buffer.Length);
|
|
|
+ stream.Close();
|
|
|
+ base64 = System.Convert.ToBase64String(buffer);
|
|
|
+ base64 = "data:" + contentType + ";base64," + base64;
|
|
|
+ }
|
|
|
}
|
|
|
PresentationPart presentationPart = presentationDocument.PresentationPart;
|
|
|
if (presentationPart != null && presentationPart.Presentation != null)
|
|
@@ -107,6 +110,40 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
slideMaster = slideMasterPart.SlideMaster;
|
|
|
colorMap = slideMasterPart.SlideMaster.ColorMap;
|
|
|
theme = slideMasterPart.ThemePart.Theme;
|
|
|
+ var imgpart = slideMasterPart.ImageParts;
|
|
|
+ if (imgpart != null)
|
|
|
+ {
|
|
|
+ imgpart.ToList().ForEach(yy =>
|
|
|
+ {
|
|
|
+ var bgct = yy.ContentType;
|
|
|
+ string bg64 = "";
|
|
|
+ using (var stream = yy.GetStream())
|
|
|
+ {
|
|
|
+ byte[] buffer = new byte[stream.Length];
|
|
|
+ stream.Read(buffer, 0, buffer.Length);
|
|
|
+ stream.Close();
|
|
|
+ bg64 = System.Convert.ToBase64String(buffer);
|
|
|
+ bg64 = "data:" + bgct + ";base64," + bg64;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // slideMaster.CommonSlideData.Background.BackgroundProperties;
|
|
|
+
|
|
|
+ //blipfill blipfill = element.blipfill;
|
|
|
+ //var imagerid = blipfill.blip.embed.value;
|
|
|
+ //idpartpair idparie = slidepart.parts.where(x => x.relationshipid == imagerid).firstordefault();
|
|
|
+ //imagepart imagepart = (imagepart)idparie.openxmlpart;
|
|
|
+ //var contenttype = imagepart.contenttype;
|
|
|
+ //string base64 = "";
|
|
|
+ //using (var stream = imagepart.getstream())
|
|
|
+ //{
|
|
|
+ // byte[] buffer = new byte[stream.length];
|
|
|
+ // stream.read(buffer, 0, buffer.length);
|
|
|
+ // stream.close();
|
|
|
+ // base64 = system.convert.tobase64string(buffer);
|
|
|
+ // base64 = "data:" + contenttype + ";base64," + base64;
|
|
|
+ //}
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
Dictionary<string, string> slideMasterColors = PowerPointHelper.DoColorMap(null, colorMap, theme);
|
|
|
//获取PPT 一页大小
|
|
@@ -133,16 +170,16 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
//获取当前页 PPT 的所有元素
|
|
|
// slide.Items = GetSlideElement(slidePart, theme, colorMap);
|
|
|
//slide.Xml = slidePart.Slide.OuterXml;
|
|
|
-
|
|
|
+ var slide10 = slidePart.Slide;
|
|
|
HiTeachCC.Model.PowerPoint.Slide slide = GetSlideElement(slidePart, slideMaster, slideMasterColors, theme, slideMasterTables, SlideMasterTextStyles, pageSize);
|
|
|
slide.Width = x;
|
|
|
slide.Height = y;
|
|
|
|
|
|
XmlDocument xml = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(slide.ToJson(), "Slide");
|
|
|
- string result = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" +
|
|
|
+ string result = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" +
|
|
|
@"<?xml-stylesheet type=""text/xsl"" href=""hixml2html.xsl""?>" +
|
|
|
xml.OuterXml;
|
|
|
- AzureBlobModel amodel = await azureBlobDBRepository.UploadTextByFolder(result, shaCode, (pageSize + 1) + ".xml" ,"pptx",false);
|
|
|
+ AzureBlobModel amodel = await azureBlobDBRepository.UploadTextByFolder(result, shaCode, (pageSize + 1) + ".xml", "pptx", false);
|
|
|
slides.Add(amodel.BlobUrl);
|
|
|
pageSize++;
|
|
|
}
|
|
@@ -175,7 +212,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
//用Layout colorMap覆盖 master ColorMap
|
|
|
slideMasterColors = PowerPointHelper.GetLayoutOrMasterColors(slidePart, slideMasterColors, theme);
|
|
|
//slidePart.SlideLayoutPart;
|
|
|
- string bgColor = PowerPointHelper.GetSlideBackgroundFill(slidePart, slideMaster, slideMasterColors, theme);
|
|
|
+ HiTeachCC.Model.PowerPoint.Fill bgFill = PowerPointHelper.GetSlideBackgroundFill(slidePart, slideMaster, slideMasterColors, theme);
|
|
|
string slideLayoutXml = slidePart.SlideLayoutPart.SlideLayout.OuterXml;
|
|
|
|
|
|
var slideLayoutTables = PowerPointHelper.IndexNodes(slideLayoutXml);
|
|
@@ -186,7 +223,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
OpenXmlElementList openXmlElements = shapeTrees.First().ChildElements;
|
|
|
//TransformGroup transformGroup = shapeTrees.First().GroupShapeProperties.TransformGroup;
|
|
|
//HiTeachCC.Model.PowerPoint.Position position = new
|
|
|
- // HiTeachCC.Model.PowerPoint.Position();
|
|
|
+ //HiTeachCC.Model.PowerPoint.Position();
|
|
|
//position.Rot = transformGroup.Rotation == null ? 0 : transformGroup.Rotation.Value;
|
|
|
//position.FlipH = transformGroup.HorizontalFlip == null ? 0 : transformGroup.HorizontalFlip.Value == true ? 1 : 0;
|
|
|
//position.FlipV = transformGroup.VerticalFlip == null ? 0 : transformGroup.VerticalFlip.Value == true ? 1 : 0;
|
|
@@ -207,12 +244,45 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
|
|
|
List<Item> list = new List<Item>();
|
|
|
- ProcessNodesInSlide(list, element, slidePart, slideMaster, slideMasterColors, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme);
|
|
|
+ ProcessNodesInSlide(list, element, slidePart.Parts, slideMaster, slideMasterColors, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme, slidePart, false);
|
|
|
slide.Items.AddRange(list);
|
|
|
|
|
|
index++;
|
|
|
}
|
|
|
}
|
|
|
+ var layOutshapeTrees = from shap in slidePart.SlideLayoutPart.SlideLayout.Descendants<ShapeTree>() select shap;
|
|
|
+ if (layOutshapeTrees.Count() > 0 && layOutshapeTrees.First().ChildElements.Count > 0)
|
|
|
+ {
|
|
|
+ OpenXmlElementList openXmlElements = layOutshapeTrees.First().ChildElements;
|
|
|
+ //TransformGroup transformGroup = shapeTrees.First().GroupShapeProperties.TransformGroup;
|
|
|
+ //HiTeachCC.Model.PowerPoint.Position position = new
|
|
|
+ //HiTeachCC.Model.PowerPoint.Position();
|
|
|
+ //position.Rot = transformGroup.Rotation == null ? 0 : transformGroup.Rotation.Value;
|
|
|
+ //position.FlipH = transformGroup.HorizontalFlip == null ? 0 : transformGroup.HorizontalFlip.Value == true ? 1 : 0;
|
|
|
+ //position.FlipV = transformGroup.VerticalFlip == null ? 0 : transformGroup.VerticalFlip.Value == true ? 1 : 0;
|
|
|
+ //position.X = transformGroup.Offset.X == null ? 0 : transformGroup.Offset.X.Value;
|
|
|
+ //position.Y = transformGroup.Offset.Y == null ? 0 : transformGroup.Offset.Y.Value;
|
|
|
+ //position.Cx = transformGroup.Extents.Cx == null ? 0 : transformGroup.Extents.Cx.Value;
|
|
|
+ //position.Cy = transformGroup.Extents.Cy == null ? 0 : transformGroup.Extents.Cy.Value;
|
|
|
+ //position.ChX = transformGroup.ChildOffset.X == null ? 0 : transformGroup.ChildOffset.X.Value;
|
|
|
+ //position.ChY = transformGroup.ChildOffset.Y == null ? 0 : transformGroup.ChildOffset.Y.Value;
|
|
|
+ //position.ChCX = transformGroup.ChildExtents.Cx == null ? 0 : transformGroup.ChildExtents.Cx.Value;
|
|
|
+ //position.ChCY = transformGroup.ChildExtents.Cy == null ? 0 : transformGroup.ChildExtents.Cy.Value;
|
|
|
+ int index = 0;
|
|
|
+ foreach (OpenXmlElement element in openXmlElements)
|
|
|
+ {
|
|
|
+ if (element is DocumentFormat.OpenXml.Presentation.NonVisualGroupShapeProperties np || element is DocumentFormat.OpenXml.Presentation.GroupShapeProperties gp)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Item> list = new List<Item>();
|
|
|
+ ProcessNodesInSlide(list, element, slidePart.SlideLayoutPart.Parts, slideMaster, slideMasterColors, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme, slidePart, true);
|
|
|
+ slide.Items.AddRange(list);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ slide.Fill = bgFill;
|
|
|
return slide;
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -228,46 +298,53 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideMasterTables"></param>
|
|
|
/// <returns></returns>
|
|
|
public void ProcessNodesInSlide(List<Item> list, OpenXmlElement element,
|
|
|
- SlidePart slidePart,
|
|
|
+ IEnumerable<IdPartPair> idPartPairs,
|
|
|
SlideMaster slideMaster,
|
|
|
Dictionary<string, string> colorMaps,
|
|
|
int index,
|
|
|
- //HiTeachCC.Model.PowerPoint.Position position,
|
|
|
Style slideLayoutTables,
|
|
|
- Style slideMasterTables, XmlDocument SlideMasterTextStyles, Theme theme)
|
|
|
+ Style slideMasterTables, XmlDocument SlideMasterTextStyles, Theme theme, SlidePart slidePart, bool isLayOut)
|
|
|
{
|
|
|
|
|
|
if (element is DocumentFormat.OpenXml.Presentation.Picture pic)//p:pic 图片
|
|
|
{
|
|
|
- list.Add(ProcessPicNode(pic, slidePart, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
- // pptElement = PictureConvert(picture, theme, colorMap, slidePart, index);
|
|
|
+ list.Add(ProcessPicNode(pic, idPartPairs, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
}
|
|
|
else if (element is DocumentFormat.OpenXml.AlternateContent mc)//mc:alternatecontent 公式等
|
|
|
{
|
|
|
- list.Add(ProcessMcNode(mc, slidePart, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
- /// pptElement = AlternateContentConvert(content, theme, colorMap, slidePart, index);
|
|
|
+ list.Add(ProcessMcNode(mc, idPartPairs, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
}
|
|
|
else if (element is DocumentFormat.OpenXml.Presentation.GraphicFrame graphicFrame)//p:graphicFrame Chart, Diagram, Table
|
|
|
{
|
|
|
- list.Add(ProcessGraphicFrameNode(graphicFrame, slidePart, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
- /// pptElement = GraphicFrameConvert(graphicFrame, theme, colorMap, index);
|
|
|
+ list.Add(ProcessGraphicFrameNode(graphicFrame, idPartPairs, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
}
|
|
|
else if (element is DocumentFormat.OpenXml.Presentation.GroupShape grpSp)//p:grpSp 组合图形
|
|
|
{
|
|
|
- ProcessGrpSpNode(list, grpSp, slidePart, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme);
|
|
|
- /// pptElement = GroupShapeConvert(groupShape, theme, colorMap, index);
|
|
|
+ ProcessGrpSpNode(list, grpSp, idPartPairs, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme, slidePart);
|
|
|
}
|
|
|
else if (element is DocumentFormat.OpenXml.Presentation.ConnectionShape cxnSp) // p:cxnSp 连接线
|
|
|
{
|
|
|
- list.Add(ProcessCxnSpNode(cxnSp, slidePart, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
- /// pptElement = ConnectionShapeConvert(connectionShape, theme, colorMap, index);
|
|
|
+ list.Add(ProcessCxnSpNode(cxnSp, idPartPairs, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
}
|
|
|
else if (element is DocumentFormat.OpenXml.Presentation.Shape sp)//p:sp 形状
|
|
|
{
|
|
|
- // pptElement = ShapeConvert(shape, theme, colorMap, index);
|
|
|
- list.Add(ProcessSpNode(sp, slidePart, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme));
|
|
|
+ if (isLayOut)
|
|
|
+ {
|
|
|
+ XmlDocument doc = new XmlDocument();
|
|
|
+ doc.LoadXml(element.OuterXml);
|
|
|
+ XmlNode userDrawnNode = doc.SelectSingleNode("//p:nvPr//@userDrawn", PowerPointHelper.GetXmlnsManager(doc.NameTable));
|
|
|
+ //处理模板中有无背编辑过的元素
|
|
|
+ if (userDrawnNode != null && userDrawnNode.Value.Equals("1"))
|
|
|
+ {
|
|
|
+ list.Add(ProcessSpNode(sp, idPartPairs, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme, slidePart));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ list.Add(ProcessSpNode(sp, idPartPairs, slideMaster, colorMaps, index, slideLayoutTables, slideMasterTables, SlideMasterTextStyles, theme, slidePart));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
- // return null; //element.OuterXml;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -283,11 +360,11 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideLayoutTables"></param>
|
|
|
/// <param name="slideMasterTables"></param>
|
|
|
/// <returns></returns>
|
|
|
- public HiTeachCC.Model.PowerPoint.Shape ProcessSpNode(DocumentFormat.OpenXml.Presentation.Shape element, SlidePart slidePart, SlideMaster slideMaster,
|
|
|
+ public HiTeachCC.Model.PowerPoint.Shape ProcessSpNode(DocumentFormat.OpenXml.Presentation.Shape element, IEnumerable<IdPartPair> idPartPairs, SlideMaster slideMaster,
|
|
|
Dictionary<string, string> colors, int index,
|
|
|
//HiTeachCC.Model.PowerPoint.Position position,
|
|
|
Style slideLayoutTables,
|
|
|
- Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme)
|
|
|
+ Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme, SlidePart slidePart)
|
|
|
{
|
|
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
@@ -410,8 +487,8 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
// typeNode = getTextByPathList(slideMasterSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
|
|
|
}
|
|
|
}
|
|
|
- HiTeachCC.Model.PowerPoint.Shape s = GenShape(element, slidePart, slideMaster, colors, index, slideLayoutTables,
|
|
|
- slideMasterTables, idNode, nameNode, idxNode, typeNode, slideLayoutSpNode, slideMasterSpNode, slideMasterTextStyles, theme);
|
|
|
+ HiTeachCC.Model.PowerPoint.Shape s = GenShape(element, idPartPairs, slideMaster, colors, index, slideLayoutTables,
|
|
|
+ slideMasterTables, idNode, nameNode, idxNode, typeNode, slideLayoutSpNode, slideMasterSpNode, slideMasterTextStyles, theme, slidePart);
|
|
|
return s;
|
|
|
}
|
|
|
/// <summary>
|
|
@@ -432,12 +509,12 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideLayoutSpNode"></param>
|
|
|
/// <param name="slideMasterSpNode"></param>
|
|
|
/// <returns></returns>
|
|
|
- public HiTeachCC.Model.PowerPoint.Shape GenShape(DocumentFormat.OpenXml.Presentation.Shape element, SlidePart slidePart, SlideMaster slideMaster,
|
|
|
+ public HiTeachCC.Model.PowerPoint.Shape GenShape(DocumentFormat.OpenXml.Presentation.Shape element, IEnumerable<IdPartPair> idPartPairs, SlideMaster slideMaster,
|
|
|
Dictionary<string, string> colors, int index,
|
|
|
//HiTeachCC.Model.PowerPoint.Position position,
|
|
|
Style slideLayoutTables,
|
|
|
Style slideMasterTables, XmlNode idNode, XmlNode nameNode, XmlNode idxNode, XmlNode typeNode,
|
|
|
- XmlDocument slideLayoutSpNode, XmlDocument slideMasterSpNode, XmlDocument slideMasterTextStyles, Theme theme)
|
|
|
+ XmlDocument slideLayoutSpNode, XmlDocument slideMasterSpNode, XmlDocument slideMasterTextStyles, Theme theme, SlidePart slidePart)
|
|
|
{
|
|
|
|
|
|
HiTeachCC.Model.PowerPoint.Shape shape = new HiTeachCC.Model.PowerPoint.Shape();
|
|
@@ -459,14 +536,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
//常规图形
|
|
|
HiTeachCC.Model.PowerPoint.Position shapePosition = PowerPointHelper.GetPosition(element.OuterXml, slideLayoutSpNode, slideMasterSpNode);
|
|
|
- Border border = PowerPointHelper.GetBorder(element.OuterXml, true, colors);
|
|
|
+ Border border = PowerPointHelper.GetBorder(element.OuterXml, false, colors);
|
|
|
HiTeachCC.Model.PowerPoint.Fill fill = PowerPointHelper.GetShapeFill(element.OuterXml, colors);
|
|
|
//var headEndTypeNode = doc.SelectSingleNode("//p:spPr/a:ln/a:headEnd/@type", PowerPointHelper.GetXmlnsManager(doc.NameTable));
|
|
|
// var tailEndTypeNode = doc.SelectSingleNode("//p:spPr/a:ln/a:tailEnd/@type", PowerPointHelper.GetXmlnsManager(doc.NameTable));
|
|
|
PowerPointHelper.GenPPTXShape(shapeType);
|
|
|
// shapePosition.Index = index;
|
|
|
shape.Position = shapePosition;
|
|
|
- shape.Paragraph = GenTextBody(element.OuterXml, slideLayoutSpNode, slideMasterSpNode, typeNode, slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme, slidePart, colors);
|
|
|
+ shape.Paragraph = GenTextBody(element.OuterXml, slideLayoutSpNode, slideMasterSpNode, typeNode, slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme, idPartPairs, colors, slidePart);
|
|
|
shape.Fill = fill;
|
|
|
shape.Border = border;
|
|
|
shape.Type = "Sp";
|
|
@@ -486,14 +563,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
|
|
|
//常规图形
|
|
|
HiTeachCC.Model.PowerPoint.Position shapePosition = PowerPointHelper.GetPosition(element.OuterXml, slideLayoutSpNode, slideMasterSpNode);
|
|
|
- Border border = PowerPointHelper.GetBorder(element.OuterXml, true, colors);
|
|
|
+ Border border = PowerPointHelper.GetBorder(element.OuterXml, false, colors);
|
|
|
HiTeachCC.Model.PowerPoint.Fill fill = PowerPointHelper.GetShapeFill(element.OuterXml, colors);
|
|
|
var headEndTypeNode = doc.SelectSingleNode("//p:spPr/a:ln/a:headEnd/@type", PowerPointHelper.GetXmlnsManager(doc.NameTable));
|
|
|
var tailEndTypeNode = doc.SelectSingleNode("//p:spPr/a:ln/a:tailEnd/@type", PowerPointHelper.GetXmlnsManager(doc.NameTable));
|
|
|
PowerPointHelper.GenPPTXShape(shapeType);
|
|
|
shape.Position = shapePosition;
|
|
|
shape.Paragraph = GenTextBody(element.OuterXml, slideLayoutSpNode, slideMasterSpNode, typeNode,
|
|
|
- slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme, slidePart, colors);
|
|
|
+ slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme, idPartPairs, colors, slidePart);
|
|
|
shape.Fill = fill;
|
|
|
shape.Border = border;
|
|
|
shape.Type = "Sp";
|
|
@@ -508,11 +585,11 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
// string align = PowerPointHelper.GetVerticalAlign(element, slideLayoutSpNode, slideMasterSpNode, typeNode, slideMasterTextStyles);
|
|
|
HiTeachCC.Model.PowerPoint.Position shapePosition = PowerPointHelper.GetPosition(element.OuterXml, slideLayoutSpNode, slideMasterSpNode);
|
|
|
- Border border = PowerPointHelper.GetBorder(element.OuterXml, true, colors);
|
|
|
+ Border border = PowerPointHelper.GetBorder(element.OuterXml, false, colors);
|
|
|
HiTeachCC.Model.PowerPoint.Fill fill = PowerPointHelper.GetShapeFill(element.OuterXml, colors);
|
|
|
shape.Position = shapePosition;
|
|
|
shape.Paragraph = GenTextBody(element.OuterXml, slideLayoutSpNode, slideMasterSpNode, typeNode,
|
|
|
- slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme, slidePart, colors);
|
|
|
+ slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme, idPartPairs, colors, slidePart);
|
|
|
shape.Fill = fill;
|
|
|
shape.Border = border;
|
|
|
shape.Type = "Sp";
|
|
@@ -621,7 +698,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
|
|
|
public List<Paragraph> GenTextBody(string nodeXml, XmlDocument slideLayoutSpNode, XmlDocument slideMasterSpNode,
|
|
|
XmlNode typeNode, Style slideLayoutTables,
|
|
|
- Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme, SlidePart slidePart, Dictionary<string, string> colors)
|
|
|
+ Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme, IEnumerable<IdPartPair> idPartPairs, Dictionary<string, string> colors, SlidePart slidePart)
|
|
|
{
|
|
|
List<Paragraph> paragraphs = new List<Paragraph>();
|
|
|
XmlDocument doc = new XmlDocument();
|
|
@@ -660,7 +737,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
XmlDocument rNode = new XmlDocument();
|
|
|
rNode.LoadXml(pNode.OuterXml);
|
|
|
- paragraph.Texts.Add(GenSpanElement(rNode, slideLayoutSpNode, slideMasterSpNode, typeNode, slideMasterTextStyles, theme, slidePart, colors, buChar));
|
|
|
+ paragraph.Texts.Add(GenSpanElement(rNode, slideLayoutSpNode, slideMasterSpNode, typeNode, slideMasterTextStyles, theme, idPartPairs, colors, buChar, slidePart));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -669,7 +746,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
XmlDocument rNode = new XmlDocument();
|
|
|
rNode.LoadXml(rNodes.Item(ri).OuterXml);
|
|
|
- paragraph.Texts.Add(GenSpanElement(rNode, slideLayoutSpNode, slideMasterSpNode, typeNode, slideMasterTextStyles, theme, slidePart, colors, buChar));
|
|
|
+ paragraph.Texts.Add(GenSpanElement(rNode, slideLayoutSpNode, slideMasterSpNode, typeNode, slideMasterTextStyles, theme, idPartPairs, colors, buChar, slidePart));
|
|
|
}
|
|
|
}
|
|
|
paragraphs.Add(paragraph);
|
|
@@ -680,7 +757,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
|
|
|
|
|
|
public Text GenSpanElement(XmlDocument nodeXml, XmlDocument slideLayoutSpNode, XmlDocument slideMasterSpNode, XmlNode typeNode,
|
|
|
- XmlDocument slideMasterTextStyles, Theme theme, SlidePart slidePart, Dictionary<string, string> colors, BuChar buChar)
|
|
|
+ XmlDocument slideMasterTextStyles, Theme theme, IEnumerable<IdPartPair> idPartPairs, Dictionary<string, string> colors, BuChar buChar, SlidePart slidePart)
|
|
|
{
|
|
|
XmlNode tNode = nodeXml.SelectSingleNode("//a:t", PowerPointHelper.GetXmlnsManager(nodeXml.NameTable));
|
|
|
/*
|
|
@@ -768,7 +845,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideMasterTables"></param>
|
|
|
/// <returns></returns>
|
|
|
public Model.PowerPoint.Picture ProcessPicNode(DocumentFormat.OpenXml.Presentation.Picture element,
|
|
|
- SlidePart slidePart, SlideMaster slideMaster, Dictionary<string, string> colors, int index,
|
|
|
+ IEnumerable<IdPartPair> idPartPairs, SlideMaster slideMaster, Dictionary<string, string> colors, int index,
|
|
|
Style slideLayoutTables,
|
|
|
Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme)
|
|
|
{
|
|
@@ -777,7 +854,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
//picPosition.Index = index;
|
|
|
BlipFill blipFill = element.BlipFill;
|
|
|
var imageRid = blipFill.Blip.Embed.Value;
|
|
|
- IdPartPair idParie = slidePart.Parts.Where(x => x.RelationshipId == imageRid).FirstOrDefault();
|
|
|
+ IdPartPair idParie = idPartPairs.Where(x => x.RelationshipId == imageRid).FirstOrDefault();
|
|
|
ImagePart imagePart = (ImagePart)idParie.OpenXmlPart;
|
|
|
var contentType = imagePart.ContentType;
|
|
|
string base64 = "";
|
|
@@ -790,7 +867,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
base64 = "data:" + contentType + ";base64," + base64;
|
|
|
}
|
|
|
|
|
|
- Border border = PowerPointHelper.GetBorder(element.OuterXml, true, colors);
|
|
|
+ Border border = PowerPointHelper.GetBorder(element.OuterXml, false, colors);
|
|
|
Model.PowerPoint.Fill fill = PowerPointHelper.GetShapeFill(element.OuterXml, colors);
|
|
|
Model.PowerPoint.Picture picture = new Model.PowerPoint.Picture
|
|
|
{
|
|
@@ -816,7 +893,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideLayoutTables"></param>
|
|
|
/// <param name="slideMasterTables"></param>
|
|
|
/// <returns></returns>
|
|
|
- public Model.PowerPoint.Picture ProcessMcNode(DocumentFormat.OpenXml.AlternateContent element, SlidePart slidePart,
|
|
|
+ public Model.PowerPoint.Picture ProcessMcNode(DocumentFormat.OpenXml.AlternateContent element, IEnumerable<IdPartPair> slidePart,
|
|
|
SlideMaster slideMaster, Dictionary<string, string> colors,
|
|
|
int index,
|
|
|
Style slideLayoutTables,
|
|
@@ -843,7 +920,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
|
|
|
|
|
|
- public Model.PowerPoint.Picture MathConvertImage(AlternateContent content, Theme theme, Dictionary<string, string> colors, SlidePart slidePart, int index)
|
|
|
+ public Model.PowerPoint.Picture MathConvertImage(AlternateContent content, Theme theme, Dictionary<string, string> colors, IEnumerable<IdPartPair> slidePart, int index)
|
|
|
{
|
|
|
var fallbacks = from contentChoice in content.Descendants<AlternateContentFallback>() select contentChoice;
|
|
|
if (fallbacks.Count() > 0)
|
|
@@ -857,7 +934,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
if (blipFills.Count() > 0)
|
|
|
{
|
|
|
var imageRid = blipFills.First().Blip.Embed.Value;
|
|
|
- IdPartPair idParie = slidePart.Parts.Where(x => x.RelationshipId == imageRid).FirstOrDefault();
|
|
|
+ IdPartPair idParie = slidePart.Where(x => x.RelationshipId == imageRid).FirstOrDefault();
|
|
|
ImagePart imagePart = (ImagePart)idParie.OpenXmlPart;
|
|
|
var contentType = imagePart.ContentType;
|
|
|
string base64 = "";
|
|
@@ -871,7 +948,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
|
|
|
Model.PowerPoint.Position picPosition = PowerPointHelper.GetPosition(shape.OuterXml, null, null);
|
|
|
- Border border = PowerPointHelper.GetBorder(shape.OuterXml, true, colors);
|
|
|
+ Border border = PowerPointHelper.GetBorder(shape.OuterXml, false, colors);
|
|
|
Model.PowerPoint.Fill fill = PowerPointHelper.GetShapeFill(shape.OuterXml, colors);
|
|
|
// picPosition.Index = index;
|
|
|
Model.PowerPoint.Picture picture = new Model.PowerPoint.Picture
|
|
@@ -903,7 +980,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideMasterTables"></param>
|
|
|
/// <returns></returns>
|
|
|
public Item ProcessGraphicFrameNode(DocumentFormat.OpenXml.Presentation.GraphicFrame graphicFrame,
|
|
|
- SlidePart slidePart, SlideMaster slideMaster, Dictionary<string, string> colors,
|
|
|
+ IEnumerable<IdPartPair> slidePart, SlideMaster slideMaster, Dictionary<string, string> colors,
|
|
|
int index,
|
|
|
Style slideLayoutTables,
|
|
|
Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme)
|
|
@@ -916,7 +993,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
if (element is DocumentFormat.OpenXml.Drawing.Table table)
|
|
|
{
|
|
|
- TableConvert(table, theme, colors);
|
|
|
+ TableConvert(table, theme, colors);
|
|
|
}
|
|
|
if (element is DocumentFormat.OpenXml.Drawing.Chart chart)
|
|
|
{
|
|
@@ -933,7 +1010,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
public void TableConvert(DocumentFormat.OpenXml.Drawing.Table table, Theme theme, Dictionary<string, string> colors)
|
|
|
{
|
|
|
int s =
|
|
|
-0;
|
|
|
+0;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 处理组合图形
|
|
@@ -947,15 +1024,15 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideLayoutTables"></param>
|
|
|
/// <param name="slideMasterTables"></param>
|
|
|
/// <returns></returns>
|
|
|
- public void ProcessGrpSpNode(List<Item> list, DocumentFormat.OpenXml.Presentation.GroupShape element, SlidePart slidePart,
|
|
|
+ public void ProcessGrpSpNode(List<Item> list, DocumentFormat.OpenXml.Presentation.GroupShape element, IEnumerable<IdPartPair> idPartPairs,
|
|
|
SlideMaster slideMaster, Dictionary<string, string> colors, int index,
|
|
|
//HiTeachCC.Model.PowerPoint.Position position,
|
|
|
Style slideLayoutTables,
|
|
|
- Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme)
|
|
|
+ Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme, SlidePart slidePart)
|
|
|
{
|
|
|
var shapes = from shap in element.Descendants<DocumentFormat.OpenXml.Presentation.Shape>() select shap;
|
|
|
HiTeachCC.Model.PowerPoint.Position position = new HiTeachCC.Model.PowerPoint.Position();
|
|
|
- TransformGroup transformGroup= element.GroupShapeProperties.TransformGroup;
|
|
|
+ TransformGroup transformGroup = element.GroupShapeProperties.TransformGroup;
|
|
|
position.Rot = transformGroup.Rotation == null ? 0 : transformGroup.Rotation.Value;
|
|
|
position.FlipH = transformGroup.HorizontalFlip == null ? 0 : transformGroup.HorizontalFlip.Value == true ? 1 : 0;
|
|
|
position.FlipV = transformGroup.VerticalFlip == null ? 0 : transformGroup.VerticalFlip.Value == true ? 1 : 0;
|
|
@@ -978,7 +1055,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
List<Item> items = new List<Item>();
|
|
|
foreach (var shape in shapes)
|
|
|
{
|
|
|
- ProcessNodesInSlide(items, shape, slidePart, slideMaster, colors, index, slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme);
|
|
|
+ ProcessNodesInSlide(items, shape, idPartPairs, slideMaster, colors, index, slideLayoutTables, slideMasterTables, slideMasterTextStyles, theme, slidePart, false);
|
|
|
}
|
|
|
group.Shapes = items;
|
|
|
list.Add(group);
|
|
@@ -998,7 +1075,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
/// <param name="slideMasterTables"></param>
|
|
|
/// <returns></returns>
|
|
|
public HiTeachCC.Model.PowerPoint.Connector ProcessCxnSpNode(DocumentFormat.OpenXml.Presentation.ConnectionShape element,
|
|
|
- SlidePart slidePart, SlideMaster slideMaster, Dictionary<string, string> colors,
|
|
|
+ IEnumerable<IdPartPair> slidePart, SlideMaster slideMaster, Dictionary<string, string> colors,
|
|
|
int index,
|
|
|
Style slideLayoutTables,
|
|
|
Style slideMasterTables, XmlDocument slideMasterTextStyles, Theme theme)
|