|
@@ -12,6 +12,7 @@ using System.Xml.Linq;
|
|
|
using TEAMModelOS.SDK.Context.Constant;
|
|
|
using TEAMModelOS.SDK.Context.Constant.Common;
|
|
|
using TEAMModelOS.SDK.Context.Exception;
|
|
|
+using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
|
|
|
using TEAMModelOS.SDK.Helper.Security.ShaHash;
|
|
|
using TEAMModelOS.SDK.Module.AzureBlob.Container;
|
|
|
using TEAMModelOS.SDK.Module.AzureBlob.Interfaces;
|
|
@@ -26,7 +27,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
public class ShapeGenerator : IShapeGenerator
|
|
|
{
|
|
|
|
|
|
-
|
|
|
+
|
|
|
private string fileShaCode { get; set; }
|
|
|
private bool isDone = false;
|
|
|
private List<object> MsgQueue = new List<object>();
|
|
@@ -280,9 +281,10 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
var nodes = spTreeNode.ChildNodes;
|
|
|
int order = 1;
|
|
|
+ List<Item> items = new List<Item>();
|
|
|
foreach (XmlNode node in nodes)
|
|
|
{
|
|
|
- result += await ProcessNodesInSlide(node.Name, node, order, warpObj);
|
|
|
+ await ProcessNodesInSlide(items, node.Name, node, order, warpObj);
|
|
|
order += 1;
|
|
|
}
|
|
|
}
|
|
@@ -290,41 +292,39 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public async Task<string> ProcessNodesInSlide(string nodeKey, XmlNode node, int order, WarpObj warpObj)
|
|
|
+ public async Task ProcessNodesInSlide(List<Item> items, string nodeKey, XmlNode node, int order, WarpObj warpObj)
|
|
|
{
|
|
|
- string result = "";
|
|
|
+ // string result = "";
|
|
|
|
|
|
switch (nodeKey)
|
|
|
{
|
|
|
case "p:sp": // Shape, Text
|
|
|
- result = await ProcessSpNode(node, order, warpObj);
|
|
|
+ await ProcessSpNode(node, order, warpObj);
|
|
|
break;
|
|
|
case "p:cxnSp": // Shape, Text (with connection)
|
|
|
- result = await ProcessCxnSpNode(node, order, warpObj);
|
|
|
+ await ProcessCxnSpNode(node, order, warpObj);
|
|
|
break;
|
|
|
case "p:pic": // Picture
|
|
|
- await ProcessPicNode(node, order, warpObj);
|
|
|
+ items.Add(await ProcessPicNode(node, order, warpObj));
|
|
|
break;
|
|
|
case "p:graphicFrame": // Chart, Diagram, Table
|
|
|
- result = ProcessGraphicFrameNode(node, order, warpObj);
|
|
|
+ ProcessGraphicFrameNode(items, node, order, warpObj);
|
|
|
break;
|
|
|
case "p:grpSp":
|
|
|
- await ProcessGroupSpNode(node, order, warpObj);
|
|
|
+ await ProcessGroupSpNode(items, node, order, warpObj);
|
|
|
break;
|
|
|
case "mc:AlternateContent": //Equations and formulas as Image 处理公式 方程等
|
|
|
var mcFallbackNode = node.GetTextByPath("mc:Fallback/p:sp");
|
|
|
- result = await ProcessSpNode(mcFallbackNode, order, warpObj);
|
|
|
+ await ProcessSpNode(mcFallbackNode, order, warpObj);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- return result;
|
|
|
}
|
|
|
|
|
|
- public async Task<string> ProcessGroupSpNode(XmlNode node, int order, WarpObj warpObj)
|
|
|
+ public async Task ProcessGroupSpNode(List<Item> items, XmlNode node, int order, WarpObj warpObj)
|
|
|
{
|
|
|
var factor = 1.00 * px96 / px914400;
|
|
|
-
|
|
|
var xfrmNode = node.GetTextByPath("p:grpSpPr/a:xfrm");
|
|
|
var x = int.Parse(xfrmNode.GetTextByPath("a:off/@x").Value) * factor;
|
|
|
var y = int.Parse(xfrmNode.GetTextByPath("a:off/@y").Value) * factor;
|
|
@@ -334,22 +334,29 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
var cy = int.Parse(xfrmNode.GetTextByPath("a:ext/@cy").Value) * factor;
|
|
|
var chcx = int.Parse(xfrmNode.GetTextByPath("a:chExt/@cx").Value) * factor;
|
|
|
var chcy = int.Parse(xfrmNode.GetTextByPath("a:chExt/@cy").Value) * factor;
|
|
|
- string result = "<div class='block group' style='z-index: " + order + "; top: " + (y - chy) + "px; left: " + (x - chx) + "px; width: " + (cx - chcx) + "px; height: " + (cy - chcy) + "px;'>";
|
|
|
-
|
|
|
+ var rotate = ShapeHelper.AngleToDegrees(xfrmNode.GetTextByPath("@rot"));
|
|
|
+ string result = "<div class='block group' style='z-index: " + order + "; top: " + (y - chy) + "px; left: " + (x - chx) + "px;" +
|
|
|
+ " width: " + (cx - chcx) + "px; height: " + (cy - chcy) + "px;'>";
|
|
|
+ Group group = new Group();
|
|
|
+ group.Position = new Position { X = x - chx, Y = y - chy, Cx = cx - chcx, Cy = cy - chcy, Rot = rotate };
|
|
|
+ group.Type = "Group";
|
|
|
+ group.Index = order++;
|
|
|
// Procsee all child nodes
|
|
|
var nodes = node.ChildNodes;
|
|
|
+ List<Item> gpIterm = new List<Item>();
|
|
|
foreach (XmlNode nd in nodes)
|
|
|
{
|
|
|
- result += await ProcessNodesInSlide(nd.Name, nd, order, warpObj);
|
|
|
+ await ProcessNodesInSlide(gpIterm, nd.Name, nd, order, warpObj);
|
|
|
order += 1;
|
|
|
}
|
|
|
-
|
|
|
+ group.Shapes = gpIterm;
|
|
|
+ items.Add(group);
|
|
|
result += "</div>";
|
|
|
|
|
|
- return result;
|
|
|
+ //return result;
|
|
|
}
|
|
|
|
|
|
- public string ProcessGraphicFrameNode(XmlNode node, int order, WarpObj warpObj)
|
|
|
+ public string ProcessGraphicFrameNode(List<Item> items, XmlNode node, int order, WarpObj warpObj)
|
|
|
{
|
|
|
var result = "";
|
|
|
var graphicTypeUri = node.GetTextByPath("a:graphic/a:graphicData/uri");
|
|
@@ -370,8 +377,6 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -393,10 +398,9 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
|
|
|
public async Task<string> ProcessCxnSpNode(XmlNode node, int order, WarpObj warpObj)
|
|
|
{
|
|
|
-
|
|
|
var id = node.GetTextByPath("p:nvCxnSpPr/p:cNvPr/@id");
|
|
|
var name = node.GetTextByPath("p:nvCxnSpPr/p:cNvPr/@name");
|
|
|
- return await GenShape(node, null, null, id, name, null, null, order, warpObj);
|
|
|
+ return await GenShape("CxnSp", node, null, null, id, name, null, null, order, warpObj);
|
|
|
}
|
|
|
|
|
|
public async Task<string> ProcessSpNode(XmlNode node, int order, WarpObj warpObj)
|
|
@@ -437,12 +441,11 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
// type = getTextByPathList(slideMasterSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]);
|
|
|
}
|
|
|
}
|
|
|
- string s = await GenShape(node, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj);
|
|
|
-
|
|
|
+ string s = await GenShape("Sp", node, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj);
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
- public async Task<string> GenShape(XmlNode node, XmlNode slideLayoutSpNode, XmlNode slideMasterSpNode, XmlNode id, XmlNode name, XmlNode idx, XmlNode type, int order, WarpObj warpObj)
|
|
|
+ public async Task<string> GenShape(string ShapeType, XmlNode node, XmlNode slideLayoutSpNode, XmlNode slideMasterSpNode, XmlNode id, XmlNode name, XmlNode idx, XmlNode type, int order, WarpObj warpObj)
|
|
|
{
|
|
|
var xfrmList = "p:spPr/a:xfrm";
|
|
|
var slideXfrmNode = node.GetTextByPath(xfrmList);
|
|
@@ -503,8 +506,9 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
var shapeBorder = ShapeHelper.GetBorder(node, true, "shape", slideLayoutClrOvride, warpObj.slideMasterContent, warpObj.themeContent);
|
|
|
var headEndNodeAttrs = node.GetTextByPath("p:spPr/a:ln/a:headEnd");
|
|
|
var tailEndNodeAttrs = node.GetTextByPath("p:spPr/a:ln/a:tailEnd");
|
|
|
- StringBuilder svgPath = new StringBuilder("<svg class='drawing' _id='" + order + id + "' _idx='" + order + idx + "' _type='" + order + type + "' _name='" + order + name+ "'");
|
|
|
- svgPath.Append(" style='top:"+position.Y+"px;left:"+position.X+ "px;width:"+position.Cx+ "px;height"+position.Cy+"px;'");
|
|
|
+ Svg shapeSvg = new Svg { Id = order + "", Width = position.Cx + "", Height = position.Cy + "", Top = position.X + "", Left = position.Y + "", Transform = "rotate(" + position.Rot + "deg)" };
|
|
|
+ StringBuilder svgPath = new StringBuilder("<svg class='drawing' _id='" + order + id + "' _idx='" + order + idx + "' _type='" + order + type + "' _name='" + order + name + "'");
|
|
|
+ svgPath.Append(" style='top:" + position.Y + "px;left:" + position.X + "px;width:" + position.Cx + "px;height" + position.Cy + "px;'");
|
|
|
if (shapeType != null || custShapType != null)
|
|
|
{
|
|
|
|
|
@@ -517,8 +521,8 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
// "'>";
|
|
|
//result += "<defs>";
|
|
|
// Fill Color
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
var clrFillType = ShapeHelper.GetFillType(node.GetTextByPath("p:spPr"));
|
|
|
/////////////////////////////////////////
|
|
|
if (clrFillType == "GRADIENT_FILL")
|
|
@@ -528,6 +532,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
var angl = Fill.Rot;
|
|
|
|
|
|
var svgGrdnt = ShapeHelper.GetSvgGradient(position.Cx, position.Cy, angl, color_arry, order, slideLayoutClrOvride, warpObj.themeContent);
|
|
|
+ shapeSvg.Defs = svgGrdnt;
|
|
|
//fill="url(#linGrd)"
|
|
|
Fill.SvgText = svgGrdnt;
|
|
|
result += svgGrdnt;
|
|
@@ -536,6 +541,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
imgFillFlg = true;
|
|
|
var svgBgImg = ShapeHelper.GetSvgImagePattern(Fill.Image, order);
|
|
|
+ shapeSvg.Defs = svgBgImg;
|
|
|
//fill="url(#imgPtrn)"
|
|
|
//console.log(svgBgImg)
|
|
|
Fill.SvgText = svgBgImg;
|
|
@@ -546,6 +552,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
if (clrFillType != null && clrFillType != "SOLID_FILL" && clrFillType != "PATTERN_FILL")
|
|
|
{
|
|
|
Fill.HtmlText = "none";
|
|
|
+ Fill.Color = "none";
|
|
|
}
|
|
|
if (shapeType != null)
|
|
|
{
|
|
@@ -556,13 +563,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
shapeType.Value == "leftBrace" ||
|
|
|
shapeType.Value == "rightBrace" ||
|
|
|
shapeType.Value == "rightBracket")
|
|
|
- { //Temp. solution - TODO
|
|
|
- Fill.HtmlText = "none";
|
|
|
- }
|
|
|
+ { //Temp. solution - TODO
|
|
|
+ Fill.HtmlText = "none";
|
|
|
+ Fill.Color = "none";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// type: none, triangle, stealth, diamond, oval, arrow
|
|
|
|
|
|
if ((headEndNodeAttrs != null && (headEndNodeAttrs.GetTextByPath("@type").Value == "triangle" || (headEndNodeAttrs.GetTextByPath("@type").Value == "arrow")) ||
|
|
@@ -575,12 +583,201 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
result += "</defs>";
|
|
|
}
|
|
|
|
|
|
- if (shapeType != null && custShapType == null) {
|
|
|
- result+= ShapeSvg.GenShapeSvg(node, order, shapeType, isFlipV, position, grndFillFlg, imgFillFlg, Fill, shapeBorder, headEndNodeAttrs, tailEndNodeAttrs);
|
|
|
+ if (shapeType != null && custShapType == null)
|
|
|
+ {
|
|
|
+ Svg svg = ShapeSvg.GenShapeSvg(node, order, shapeType, isFlipV, position, grndFillFlg, imgFillFlg, Fill, shapeBorder, headEndNodeAttrs, tailEndNodeAttrs);
|
|
|
+ shapeSvg.SvgShape = svg.SvgShape;
|
|
|
+ shapeSvg.SvgData = svg.SvgData;
|
|
|
+ if (ShapeType.Equals("Sp"))
|
|
|
+ {
|
|
|
+ Shape shape= new Shape { Border = shapeBorder, Fill = Fill, Svg = shapeSvg, Type = "Sp", Position = position, Index = order, ShapeType = shapeType.Value };
|
|
|
+
|
|
|
+ var txbody = node.GetTextByPath("p:txBody");
|
|
|
+ if (txbody != null) {
|
|
|
+ List<Paragraph> paragraphs= GenTextBody(txbody, node, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (ShapeType.Equals("CxnSp"))
|
|
|
+ {
|
|
|
+ new Connector { Border = shapeBorder, Svg = shapeSvg, Type = "CxnSp", Position = position, Index = order, CxnType = shapeType.Value };
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else {
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ private List<Paragraph> GenTextBody(XmlNode textBodyNode, XmlNode node, XmlNode slideLayoutSpNode, XmlNode slideMasterSpNode, XmlNode type, WarpObj warpObj)
|
|
|
+ {
|
|
|
+ var slideMasterTextStyles = warpObj.slideMasterTextStyles;
|
|
|
+ string vert = GetVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode);
|
|
|
+ var ps= textBodyNode.GetTextByPathList("a:p");
|
|
|
+ if (ps != null) {
|
|
|
+ foreach (XmlNode pNode in ps) {
|
|
|
+ var rNode = pNode.GetTextByPathList("a:r");
|
|
|
+ GetHorizontalAlign(pNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles);
|
|
|
+ BuChar buChar= GenBuChar(pNode, node, slideLayoutSpNode, slideMasterSpNode, type, warpObj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private BuChar GenBuChar(XmlNode node, XmlNode spNode, XmlNode slideLayoutSpNode, XmlNode slideMasterSpNode, XmlNode type, WarpObj warpObj)
|
|
|
+ {
|
|
|
+ var sldMstrTxtStyles = warpObj.slideMasterTextStyles;
|
|
|
+ var slideMasterContent = warpObj.slideMasterContent;
|
|
|
+ var themeContent = warpObj.themeContent;
|
|
|
+ var rNodes= node.GetTextByPathList("a:r");
|
|
|
+ XmlNode rNode = null;
|
|
|
+ if (rNodes != null) {
|
|
|
+ rNode = rNodes[0];
|
|
|
+ }
|
|
|
+ XmlNode dfltBultColor, dfltBultSize, bultColor, bultSize;
|
|
|
+ if (rNode != null)
|
|
|
+ {
|
|
|
+ dfltBultColor = GetFontColorPr(rNode, spNode, type, sldMstrTxtStyles, slideMasterContent , themeContent);
|
|
|
+ }
|
|
|
+ throw new NotImplementedException();
|
|
|
+ }
|
|
|
+
|
|
|
+ private XmlNode GetFontColorPr(XmlNode node, XmlNode spNode, XmlNode type, XmlNode sldMstrTxtStyles , XmlNode slideMasterContent ,XmlNode themeContent)
|
|
|
+ {
|
|
|
+ var rPrNode = node.GetTextByPath("a:rPr");
|
|
|
+ string filTyp, textBordr;
|
|
|
+ string color = null;
|
|
|
+ if (rPrNode != null) {
|
|
|
+ filTyp = ShapeHelper.GetFillType(rPrNode);
|
|
|
+ if (filTyp == "SOLID_FILL")
|
|
|
+ {
|
|
|
+ var solidFillNode = node.GetTextByPath( "a:rPr/a:solidFill");
|
|
|
+ string colorstr = ShapeHelper.GetSolidFill(solidFillNode , slideLayoutClrOvride, slideMasterContent , themeContent);
|
|
|
+ color = PowerPointHelper.ColorToning(solidFillNode.OuterXml, colorstr);
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (filTyp == "PATTERN_FILL")
|
|
|
+ {
|
|
|
+ var pattFill = node.GetTextByPath("a:rPr/a:pattFill");
|
|
|
+ Fill colorFill = ShapeHelper. GetPatternFill(pattFill ,slideLayoutClrOvride,slideMasterContent,themeContent);
|
|
|
+
|
|
|
+ if (colorFill != null && colorFill.gradColor.IsNotEmpty())
|
|
|
+ {
|
|
|
+ color = colorFill.gradColor[0];
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ color = "000000";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var sPstyle = spNode.GetTextByPath("p:style/a:fontRef");
|
|
|
+ if (sPstyle !=null)
|
|
|
+ {
|
|
|
+ string colorstr = ShapeHelper.GetSolidFill(sPstyle,slideLayoutClrOvride,slideMasterContent,themeContent);
|
|
|
+ color = PowerPointHelper.ColorToning(sPstyle.OuterXml, colorstr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (color == null) {
|
|
|
+ color = "000000";
|
|
|
+ }
|
|
|
+ var txtBrdrNode = node.GetTextByPath("a:rPr/a:ln");
|
|
|
+ if (txtBrdrNode != null) {
|
|
|
+ var txBrd = ShapeHelper.GetBorder(node,true,"text",slideLayoutClrOvride,slideMasterContent,themeContent);
|
|
|
+ }
|
|
|
+ throw new NotImplementedException();
|
|
|
+ }
|
|
|
+
|
|
|
+ public string GetVerticalAlign(XmlNode node, XmlNode slideLayoutSpNode, XmlNode slideMasterSpNode ) {
|
|
|
+ XmlDocument doc = new XmlDocument();
|
|
|
+ doc.LoadXml(node.OuterXml);
|
|
|
+ XmlNode anchor = doc.GetTextByPath("//p:txBody/a:bodyPr/@anchor");
|
|
|
+ if (anchor == null)
|
|
|
+ {
|
|
|
+ if (slideLayoutSpNode != null)
|
|
|
+ {
|
|
|
+ doc.LoadXml(slideLayoutSpNode.OuterXml);
|
|
|
+ anchor = doc.GetTextByPath("//p:txBody/a:bodyPr/@anchor");
|
|
|
+ }
|
|
|
+ if (anchor == null && slideMasterSpNode != null)
|
|
|
+ {
|
|
|
+ doc.LoadXml(slideMasterSpNode.OuterXml);
|
|
|
+ anchor = doc.GetTextByPath("//p:txBody/a:bodyPr/@anchor");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (anchor != null)
|
|
|
+ {
|
|
|
+ return anchor.Value.Equals("ctr") ? "v-mid" : anchor.Value.Equals("b") ? "v-down" : "v-up";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return "v-up";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public string GetHorizontalAlign(XmlNode node, XmlNode slideLayoutSpNode, XmlNode slideMasterSpNode,
|
|
|
+ XmlNode typeNode, XmlNode slideMasterTextStyles)
|
|
|
+ {
|
|
|
+ XmlDocument doc = new XmlDocument();
|
|
|
+ doc.LoadXml(node.OuterXml);
|
|
|
+ XmlNode algn = doc.GetTextByPath("//a:pPr/@algn");
|
|
|
+ if (algn == null)
|
|
|
+ {
|
|
|
+ if (slideLayoutSpNode != null)
|
|
|
+ {
|
|
|
+ doc.LoadXml(slideLayoutSpNode.OuterXml);
|
|
|
+ algn = doc.GetTextByPath("//p:txBody/a:p/a:pPr/@algn");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (algn == null && slideMasterSpNode != null)
|
|
|
+ {
|
|
|
+ doc.LoadXml(slideMasterSpNode.OuterXml);
|
|
|
+ algn = doc.GetTextByPath("//p:txBody/a:p/a:pPr/@algn");
|
|
|
+ }
|
|
|
+ if (algn == null && typeNode != null)
|
|
|
+ {
|
|
|
+ switch (typeNode.Value)
|
|
|
+ {
|
|
|
+ case "title":
|
|
|
+ case "subTitle":
|
|
|
+ case "ctrTitle":
|
|
|
+ //doc.LoadXml(slideMasterStyle.TypeTable.OuterXml);
|
|
|
+ doc.LoadXml(slideMasterTextStyles.OuterXml);
|
|
|
+ algn = doc.GetTextByPath("//p:titleStyle/a:lvl1pPr/@algn");
|
|
|
+ break;
|
|
|
+ case "body":
|
|
|
+ doc.LoadXml(slideMasterTextStyles.OuterXml);
|
|
|
+ algn = doc.GetTextByPath("//p:bodyStyle/a:lvl1pPr/@algn");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ // doc.LoadXml(slideMasterStyle.TypeTable.OuterXml);
|
|
|
+ doc.LoadXml(slideMasterTextStyles.OuterXml);
|
|
|
+ algn = doc.GetTextByPath("//p:otherStyle/a:lvl1pPr/@algn");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (algn == null)
|
|
|
+ {
|
|
|
+ if (typeNode == null)
|
|
|
+ {
|
|
|
+ return "h-left";
|
|
|
+ }
|
|
|
+ if (typeNode.Value.Equals("title") || typeNode.Value.Equals("subTitle") || typeNode.Value.Equals("ctrTitle"))
|
|
|
+ {
|
|
|
+ return "h-mid";
|
|
|
+ }
|
|
|
+ else if (typeNode.Value == "sldNum")
|
|
|
+ {
|
|
|
+ return "h-right";
|
|
|
+ }
|
|
|
+ else if (typeNode.Value.Equals("body")) { return "h-left"; }
|
|
|
+ }
|
|
|
+ return algn.Value.Equals("ctr") ? "h-mid" : algn.Value.Equals("r") ? "h-right" : "h-left";
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 幻灯片 背景色填充
|
|
|
/// </summary>
|
|
@@ -1034,7 +1231,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
var xfrmList = "p:spPr/a:xfrm";
|
|
|
var xfrmNode = node.GetTextByPath(xfrmList);
|
|
|
- Media media = new Media() { Type = "Pic" };
|
|
|
+ Media media = new Media() { Type = "Media" };
|
|
|
var id = node.GetTextByPath("p:nvPicPr/p:cNvPr/@id");
|
|
|
XmlNode slideLayoutSpNode = ShapeHelper.GetNodesTable(id, null, null, warpObj, "Layout");
|
|
|
XmlNode slideMasterSpNode = ShapeHelper.GetNodesTable(id, null, null, warpObj, "Master");
|