|
@@ -356,10 +356,23 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
break;
|
|
|
case "mc:AlternateContent": //Equations and formulas as Image 处理公式 方程等
|
|
|
var mcFallbackNode = node.GetTextByPath("mc:Fallback/p:sp");
|
|
|
- Item mcitem = await ProcessSpNode(mcFallbackNode, order, warpObj);
|
|
|
- if (mcitem != null)
|
|
|
+ if (mcFallbackNode != null)
|
|
|
{
|
|
|
- items.Add(mcitem);
|
|
|
+ Item mcitem = await ProcessSpNode(mcFallbackNode, order, warpObj);
|
|
|
+ if (mcitem != null)
|
|
|
+ {
|
|
|
+ items.Add(mcitem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ mcFallbackNode = node.GetTextByPath("mc:Fallback/p:pic");
|
|
|
+ if (mcFallbackNode != null) {
|
|
|
+ Item mcPicitem = await ProcessPicNode(mcFallbackNode, order, warpObj);
|
|
|
+ if (mcPicitem != null)
|
|
|
+ {
|
|
|
+ items.Add(mcPicitem);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
@@ -410,14 +423,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
switch (graphicTypeUri.Value)
|
|
|
{
|
|
|
case "http://schemas.openxmlformats.org/drawingml/2006/table":
|
|
|
- Table table= await GenTable(node, order, warpObj);
|
|
|
+ Table table= await GenTable(node, order, warpObj);
|
|
|
items.Add(table);
|
|
|
break;
|
|
|
case "http://schemas.openxmlformats.org/drawingml/2006/chart":
|
|
|
items.Add(GenChart(node, order, warpObj));
|
|
|
break;
|
|
|
case "http://schemas.openxmlformats.org/drawingml/2006/diagram":
|
|
|
- result = GenDiagram(node, warpObj);
|
|
|
+ await GenDiagram(items, node, order, warpObj);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -426,9 +439,55 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public string GenDiagram(XmlNode node, WarpObj warpObj)
|
|
|
+ public async Task GenDiagram(List<Item> items, XmlNode node, int order, WarpObj warpObj)
|
|
|
{
|
|
|
- return "";
|
|
|
+ var xfrmNode = node.GetTextByPath("p:xfrm");
|
|
|
+ var dgmRelIds = node.GetTextByPath("a:graphic/a:graphicData/dgm:relIds");
|
|
|
+ var dgmClrFileId = dgmRelIds.GetTextByPath("@r:cs");
|
|
|
+ var dgmDataFileId = dgmRelIds.GetTextByPath("@r:dm");
|
|
|
+ var dgmLayoutFileId = dgmRelIds.GetTextByPath("@r:lo");
|
|
|
+ var dgmQuickStyleFileId = dgmRelIds.GetTextByPath("@r:qs");
|
|
|
+ var dgmClrFileName = warpObj.slideResObj[dgmClrFileId.Value]["target"];
|
|
|
+ var dgmDataFileName = warpObj.slideResObj[dgmDataFileId.Value]["target"];
|
|
|
+ var dgmLayoutFileName = warpObj.slideResObj[dgmLayoutFileId.Value]["target"];
|
|
|
+ var dgmQuickStyleFileName = warpObj.slideResObj[dgmQuickStyleFileId.Value]["target"];
|
|
|
+ var dgmClr = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmClrFileName + "']");
|
|
|
+ var dgmData = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmDataFileName + "']");
|
|
|
+ var dgmLayout = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmLayoutFileName + "']");
|
|
|
+ var dgmQuickStyle = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmQuickStyleFileName + "']");
|
|
|
+ var dgmDrwFileName = "";
|
|
|
+ var dataModelExt = dgmData.GetTextByPath("pkg:xmlData/dgm:dataModel/dgm:extLst/a:ext/dsp:dataModelExt");
|
|
|
+ if (dataModelExt != null) {
|
|
|
+ var dgmDrwFileId = dataModelExt.GetTextByPath("@relId");
|
|
|
+ dgmDrwFileName = warpObj.slideResObj[dgmDrwFileId.Value]["target"];
|
|
|
+ }
|
|
|
+ XmlNode dgmDrwFile=null ;
|
|
|
+ if (dgmDrwFileName != "")
|
|
|
+ {
|
|
|
+ dgmDrwFile = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmDrwFileName + "']");
|
|
|
+ }
|
|
|
+ var dgmDrwSpArray = dgmDrwFile.GetTextByPathList("pkg:xmlData/dsp:drawing/dsp:spTree/dsp:sp");
|
|
|
+ if (dgmDrwSpArray !=null)
|
|
|
+ {
|
|
|
+ Group group = new Group();
|
|
|
+ group.Position = ShapeHelper.GetPosition(xfrmNode, null, null);
|
|
|
+ group.Type = "Diagram";
|
|
|
+ group.Index = order++;
|
|
|
+ // Procsee all child nodes
|
|
|
+ List<Item> gpIterm = new List<Item>();
|
|
|
+ XmlDocument nodeDoc = new XmlDocument();
|
|
|
+ var dgmDrwSpArrayLen = dgmDrwSpArray.Count;
|
|
|
+ for (var i = 0; i < dgmDrwSpArrayLen; i++)
|
|
|
+ {
|
|
|
+ var dspSp = dgmDrwSpArray.Item(i);
|
|
|
+ var pSpStr = dspSp.OuterXml.Replace("dsp:", "p:").Replace("xmlns:dsp=\"http://schemas.microsoft.com/office/drawing/2008/diagram\"", "xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"");
|
|
|
+ nodeDoc.LoadXml(pSpStr);
|
|
|
+ //await ProcessSpNode(nodeDoc,order,warpObj);
|
|
|
+ await ProcessNodesInSlide(gpIterm, nodeDoc.FirstChild.Name, nodeDoc.FirstChild, order, warpObj);
|
|
|
+ }
|
|
|
+ group.Shapes = gpIterm;
|
|
|
+ items.Add(group);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public Chart GenChart(XmlNode node,int order , WarpObj warpObj)
|
|
@@ -512,7 +571,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
XmlNodeList serNodes = null;
|
|
|
switch (key)
|
|
|
{
|
|
|
- //break块种不可以随意更换,此条件用于归类不同从Chart
|
|
|
+ //break块中不可以随意更换,此条件用于归类不同从Chart
|
|
|
case "pieChart":
|
|
|
case "ofPieChart":
|
|
|
case "pie3DChart":
|
|
@@ -582,7 +641,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
colChart.Is3D = true;
|
|
|
}
|
|
|
- colChart.ColType = key;
|
|
|
+ colChart.ColType = key.Replace("bar","col");
|
|
|
var ColGrouping = nodeChild.GetTextByPath("c:grouping/@val");
|
|
|
if (ColGrouping != null)
|
|
|
{
|
|
@@ -1265,14 +1324,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
else if (custShapType != null)
|
|
|
{
|
|
|
XmlNode pathLstNode = custShapType.GetTextByPath("a:pathLst");
|
|
|
- XmlNode pathNode = pathLstNode.GetTextByPath("a:path");
|
|
|
- var maxX = 0.0;
|
|
|
- var maxY = 0.0;
|
|
|
- if (pathLstNode != null)
|
|
|
- {
|
|
|
- maxX = double.Parse(pathNode.GetTextByPath("@w").Value) * px96 / px914400;
|
|
|
- maxY = double.Parse(pathNode.GetTextByPath("@h").Value) * px96 / px914400;
|
|
|
- }
|
|
|
+ //XmlNode pathNode = pathLstNode.GetTextByPath("a:path");
|
|
|
+ //var maxX = 0.0;
|
|
|
+ //var maxY = 0.0;
|
|
|
+ //if (pathLstNode != null)
|
|
|
+ //{
|
|
|
+ // maxX = double.Parse(pathNode.GetTextByPath("@w").Value) * px96 / px914400;
|
|
|
+ // maxY = double.Parse(pathNode.GetTextByPath("@h").Value) * px96 / px914400;
|
|
|
+ //}
|
|
|
var closeNode = pathLstNode.GetTextByPath("a:path/a:close");
|
|
|
var startPoint = pathLstNode.GetTextByPath("a:path/a:moveTo/a:pt");
|
|
|
var spX = 96.0;
|
|
@@ -1346,11 +1405,12 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
if (childNode.Name.Equals("a:arcTo"))
|
|
|
{
|
|
|
- XmlNodeList nodeList = childNode.ChildNodes;
|
|
|
- var wR = double.Parse(nodeList.Item(0).GetTextByPath("@wR").Value) * px96 / px914400;
|
|
|
- var hR = double.Parse(nodeList.Item(0).GetTextByPath("@hR").Value) * px96 / px914400;
|
|
|
- var stAng = double.Parse(nodeList.Item(0).GetTextByPath("@stAng").Value) * px96 / px914400;
|
|
|
- var swAng = double.Parse(nodeList.Item(0).GetTextByPath("@swAng").Value) * px96 / px914400;
|
|
|
+
|
|
|
+
|
|
|
+ var wR = double.Parse(childNode.GetTextByPath("@wR").Value) * px96 / px914400;
|
|
|
+ var hR = double.Parse(childNode.GetTextByPath("@hR").Value) * px96 / px914400;
|
|
|
+ var stAng = double.Parse(childNode.GetTextByPath("@stAng").Value) * px96 / px914400;
|
|
|
+ var swAng = double.Parse(childNode.GetTextByPath("@swAng").Value) * px96 / px914400;
|
|
|
var endAng = stAng + swAng;
|
|
|
d += ShapeSvg.ShapeArc(wR, hR, wR, hR, stAng, endAng, false);
|
|
|
//Paths.Add(new ArcToPath() {
|