|
@@ -3,23 +3,55 @@ using DocumentFormat.OpenXml.Drawing;
|
|
|
using DocumentFormat.OpenXml.Packaging;
|
|
|
using DocumentFormat.OpenXml.Presentation;
|
|
|
using HiTeachCC.Model.PowerPoint;
|
|
|
+using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Drawing;
|
|
|
+using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
using System.Xml;
|
|
|
+using System.Xml.Linq;
|
|
|
+using System.Xml.XPath;
|
|
|
+using TEAMModelOS.SDK.Context.Constant;
|
|
|
+using TEAMModelOS.SDK.Context.Exception;
|
|
|
using TEAMModelOS.SDK.Helper.Common.ColorHelper;
|
|
|
+using TEAMModelOS.SDK.Helper.Common.StringHelper;
|
|
|
+using TEAMModelOS.SDK.Helper.Security.ShaHash;
|
|
|
+using TEAMModelOS.SDK.Module.AzureBlob.Container;
|
|
|
+using TEAMModelOS.SDK.Module.AzureBlob.Interfaces;
|
|
|
using ColorMap = DocumentFormat.OpenXml.Presentation.ColorMap;
|
|
|
using Theme = DocumentFormat.OpenXml.Drawing.Theme;
|
|
|
|
|
|
|
|
|
namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
- public class PowerPointHelper
|
|
|
+ public static class PowerPointHelper
|
|
|
{
|
|
|
- public static XmlNamespaceManager GetXmlnsManager(XmlNameTable nameTable)
|
|
|
+ public static XmlNamespaceManager xmlnsManager ;
|
|
|
+ public static XmlNode GetTextByPath(this XmlDocument document , string expression) {
|
|
|
+ return document.SelectSingleNode(expression , xmlnsManager);
|
|
|
+ }
|
|
|
+ public static XmlNode GetTextByPath(this XmlNode node, string expression)
|
|
|
+ {
|
|
|
+
|
|
|
+ return node.SelectSingleNode(expression, xmlnsManager);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static XmlNodeList GetTextByPathList(this XmlDocument document, string expression)
|
|
|
+ {
|
|
|
+ return document.SelectNodes(expression, xmlnsManager);
|
|
|
+ }
|
|
|
+ public static XmlNodeList GetTextByPathList(this XmlNode node, string expression)
|
|
|
+ {
|
|
|
+ return node.SelectNodes(expression, xmlnsManager);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ static PowerPointHelper()
|
|
|
{
|
|
|
- XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(nameTable);
|
|
|
+ xmlnsManager = new XmlNamespaceManager(new NameTable());
|
|
|
xmlnsManager.AddNamespace("p", "http://schemas.openxmlformats.org/presentationml/2006/main");
|
|
|
xmlnsManager.AddNamespace("a", "http://schemas.openxmlformats.org/drawingml/2006/main");
|
|
|
xmlnsManager.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");
|
|
@@ -50,11 +82,43 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
xmlnsManager.AddNamespace("cs", "http://schemas.microsoft.com/office/drawing/2012/chartStyle");
|
|
|
xmlnsManager.AddNamespace("thm15", "http://schemas.microsoft.com/office/thememl/2012/main");
|
|
|
xmlnsManager.AddNamespace("fn", "http://www.w3.org/2005/xpath-functions");
|
|
|
- return xmlnsManager;
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public static async Task<AzureBlobModel>SaveBase64ToBolob(string data, string contentType ,string FolderName ,string fileName , IAzureBlobDBRepository azureBlobDBRepository ) {
|
|
|
+ string fileExt ;
|
|
|
+ if (ContentTypeDict.extdict.TryGetValue(contentType, out string ext))
|
|
|
+ {
|
|
|
+ fileExt = ext;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //解决多种扩展名不能获取的
|
|
|
+ string[] sp = contentType.Split("/");
|
|
|
+ fileExt = sp[sp.Length - 1];
|
|
|
+ sp = fileExt.Split("+");
|
|
|
+ fileExt = "." + sp[sp.Length - 1];
|
|
|
+ }
|
|
|
+ //data:image/jpeg;base64,
|
|
|
+ try {
|
|
|
+ if (string.IsNullOrEmpty(fileName))
|
|
|
+ {
|
|
|
+ Stream stream = new MemoryStream(Convert.FromBase64String(data));
|
|
|
+ string shaCode = ShaHashHelper.GetSHA1(stream);
|
|
|
+ fileName = shaCode + fileExt;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (fileName.Split(".").Length == 1) {
|
|
|
+ fileName += fileExt;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Stream streamBlob = new MemoryStream(Convert.FromBase64String(data));
|
|
|
+ AzureBlobModel model = await azureBlobDBRepository.UploadFileByFolder(streamBlob, FolderName + "/imgs", fileName, "pptx", false);
|
|
|
+ return model;
|
|
|
+ } catch (Exception x) {
|
|
|
|
|
|
+ throw new BizException(x.Message); }
|
|
|
+ }
|
|
|
public static void GenPPTXShape(XmlNode shapeType)
|
|
|
{
|
|
|
string svgPath = "";
|
|
@@ -444,16 +508,16 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
|
|
|
public static string GetFontColor(XmlDocument nodeXml, XmlNode typeNode, XmlDocument slideMasterTextStyles, Dictionary<string, string> colors)
|
|
|
{
|
|
|
- var color = nodeXml.SelectSingleNode("//a:rPr/a:solidFill/a:srgbClr/@val", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ var color = nodeXml.SelectSingleNode("//a:rPr/a:solidFill/a:srgbClr/@val", xmlnsManager);
|
|
|
if (color == null && typeNode != null)
|
|
|
{
|
|
|
if (typeNode.Value.Equals("title") || typeNode.Value.Equals("subTitle") || typeNode.Value.Equals("ctrTitle"))
|
|
|
{
|
|
|
- color = slideMasterTextStyles.SelectSingleNode("//p:titleStyle/a:lvl1pPr/a:defRPr/a:solidFill/a:schemeClr/@val", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ color = slideMasterTextStyles.SelectSingleNode("//p:titleStyle/a:lvl1pPr/a:defRPr/a:solidFill/a:schemeClr/@val", xmlnsManager);
|
|
|
}
|
|
|
if (typeNode.Value.Equals("body"))
|
|
|
{
|
|
|
- color = slideMasterTextStyles.SelectSingleNode("//p:bodyStyle/a:lvl1pPr/a:defRPr/a:solidFill/a:schemeClr/@val", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ color = slideMasterTextStyles.SelectSingleNode("//p:bodyStyle/a:lvl1pPr/a:defRPr/a:solidFill/a:schemeClr/@val", xmlnsManager);
|
|
|
}
|
|
|
//if (typeNode.Value.Equals("dt") || typeNode.Value.Equals("sldNum"))
|
|
|
//{
|
|
@@ -462,7 +526,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
if (color == null && typeNode == null)
|
|
|
{
|
|
|
- color = slideMasterTextStyles.SelectSingleNode("//p:otherStyle/a:lvl1pPr/a:defRPr/a:solidFill/a:schemeClr/@val", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ color = slideMasterTextStyles.SelectSingleNode("//p:otherStyle/a:lvl1pPr/a:defRPr/a:solidFill/a:schemeClr/@val", xmlnsManager);
|
|
|
}
|
|
|
if (color != null)
|
|
|
{
|
|
@@ -479,23 +543,23 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
|
|
|
int fontSize = 0;
|
|
|
- XmlNode szNode = nodeXml.SelectSingleNode("//a:rPr/@sz", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode szNode = nodeXml.SelectSingleNode("//a:rPr/@sz", xmlnsManager);
|
|
|
if (szNode == null)
|
|
|
{
|
|
|
if (slideLayoutSpNode != null)
|
|
|
{
|
|
|
- szNode = slideLayoutSpNode.SelectSingleNode("//p:txBody/a:lstStyle/a:lvl1pPr/a:defRPr/@sz", GetXmlnsManager(slideLayoutSpNode.NameTable));
|
|
|
+ szNode = slideLayoutSpNode.SelectSingleNode("//p:txBody/a:lstStyle/a:lvl1pPr/a:defRPr/@sz", xmlnsManager);
|
|
|
}
|
|
|
}
|
|
|
if (szNode == null && typeNode != null)
|
|
|
{
|
|
|
if (typeNode.Value.Equals("title") || typeNode.Value.Equals("subTitle") || typeNode.Value.Equals("ctrTitle"))
|
|
|
{
|
|
|
- szNode = slideMasterTextStyles.SelectSingleNode("//p:titleStyle/a:lvl1pPr/a:defRPr/@sz", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ szNode = slideMasterTextStyles.SelectSingleNode("//p:titleStyle/a:lvl1pPr/a:defRPr/@sz", xmlnsManager);
|
|
|
}
|
|
|
if (typeNode.Value.Equals("body"))
|
|
|
{
|
|
|
- szNode = slideMasterTextStyles.SelectSingleNode("//p:bodyStyle/a:lvl1pPr/a:defRPr/@sz", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ szNode = slideMasterTextStyles.SelectSingleNode("//p:bodyStyle/a:lvl1pPr/a:defRPr/@sz", xmlnsManager);
|
|
|
}
|
|
|
//if (typeNode.Value.Equals("dt") || typeNode.Value.Equals("sldNum"))
|
|
|
//{
|
|
@@ -504,13 +568,13 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
if (szNode == null && typeNode == null)
|
|
|
{
|
|
|
- szNode = slideMasterTextStyles.SelectSingleNode("//p:otherStyle/a:lvl1pPr/a:defRPr/@sz", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ szNode = slideMasterTextStyles.SelectSingleNode("//p:otherStyle/a:lvl1pPr/a:defRPr/@sz", xmlnsManager);
|
|
|
}
|
|
|
if (szNode != null)
|
|
|
{
|
|
|
fontSize = int.Parse(szNode.Value) / 100;
|
|
|
}
|
|
|
- XmlNode baseline = nodeXml.SelectSingleNode("//a:rPr/@baseline", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode baseline = nodeXml.SelectSingleNode("//a:rPr/@baseline", xmlnsManager);
|
|
|
if (baseline != null)
|
|
|
{
|
|
|
fontSize -= 10;
|
|
@@ -520,12 +584,12 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
public static string GetFontType(XmlDocument nodeXml, XmlNode typeNode, XmlDocument slideMasterTextStyles, Theme theme)
|
|
|
{
|
|
|
- XmlNode typeface = nodeXml.SelectSingleNode("//a:rPr/a:latin/@typeface", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode typeface = nodeXml.SelectSingleNode("//a:rPr/a:latin/@typeface",xmlnsManager);
|
|
|
if (typeface == null)
|
|
|
{
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(theme.OuterXml);
|
|
|
- typeface = doc.SelectSingleNode("//a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin/@typeface", GetXmlnsManager(doc.NameTable));
|
|
|
+ typeface = doc.SelectSingleNode("//a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin/@typeface", xmlnsManager);
|
|
|
}
|
|
|
if (typeface != null)
|
|
|
{
|
|
@@ -539,7 +603,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
public static string GetFontBold(XmlDocument nodeXml, XmlNode typeNode, XmlDocument slideMasterTextStyles)
|
|
|
{
|
|
|
- var FontBold = nodeXml.SelectSingleNode("a:rPr/@b", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ var FontBold = nodeXml.SelectSingleNode("a:rPr/@b",xmlnsManager);
|
|
|
if (FontBold != null)
|
|
|
{
|
|
|
if (FontBold.Value.Equals("1"))
|
|
@@ -560,7 +624,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
public static string GetFontItalic(XmlDocument nodeXml, XmlNode typeNode, XmlDocument slideMasterTextStyles)
|
|
|
{
|
|
|
- var FontBold = nodeXml.SelectSingleNode("a:rPr/@i", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ var FontBold = nodeXml.SelectSingleNode("a:rPr/@i",xmlnsManager);
|
|
|
if (FontBold != null)
|
|
|
{
|
|
|
if (FontBold.Value.Equals("1"))
|
|
@@ -581,7 +645,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
public static string GetFontDecoration(XmlDocument nodeXml, XmlNode typeNode, XmlDocument slideMasterTextStyles)
|
|
|
{
|
|
|
- var FontBold = nodeXml.SelectSingleNode("a:rPr/@u", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ var FontBold = nodeXml.SelectSingleNode("a:rPr/@u",xmlnsManager);
|
|
|
if (FontBold != null)
|
|
|
{
|
|
|
if (FontBold.Value.Equals("sng"))
|
|
@@ -602,7 +666,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
public static string GetTextVerticalAlign(XmlDocument nodeXml, XmlNode typeNode, XmlDocument slideMasterTextStyles)
|
|
|
{
|
|
|
- var baseline = nodeXml.SelectSingleNode("a:rPr/@baseline", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ var baseline = nodeXml.SelectSingleNode("a:rPr/@baseline",xmlnsManager);
|
|
|
if (baseline != null)
|
|
|
{
|
|
|
return int.Parse(baseline.Value) / 1000 + "%";
|
|
@@ -626,21 +690,21 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
// From slide
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(nodeXml);
|
|
|
- XmlNode nofillNode = doc.SelectSingleNode("//p:spPr/a:noFill", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode nofillNode = doc.SelectSingleNode("//p:spPr/a:noFill", xmlnsManager);
|
|
|
if (nofillNode != null)
|
|
|
{
|
|
|
return new Model.PowerPoint.Fill() { Type = 0, };
|
|
|
}
|
|
|
Model.PowerPoint.Fill fill = new Model.PowerPoint.Fill();
|
|
|
string fillColor = null;
|
|
|
- XmlNode fillNode = doc.SelectSingleNode("//p:spPr/a:solidFill/a:srgbClr/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode fillNode = doc.SelectSingleNode("//p:spPr/a:solidFill/a:srgbClr/@val", xmlnsManager);
|
|
|
if (fillNode == null)
|
|
|
{
|
|
|
- fillNode = doc.SelectSingleNode("//p:spPr/a:solidFill/a:schemeClr/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ fillNode = doc.SelectSingleNode("//p:spPr/a:solidFill/a:schemeClr/@val", xmlnsManager);
|
|
|
}
|
|
|
if (fillNode == null)
|
|
|
{
|
|
|
- fillNode = doc.SelectSingleNode("//p:style/a:fillRef/a:schemeClr/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ fillNode = doc.SelectSingleNode("//p:style/a:fillRef/a:schemeClr/@val", xmlnsManager);
|
|
|
}
|
|
|
if (fillNode != null)
|
|
|
{
|
|
@@ -653,7 +717,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
fillColor = fillNode.Value;
|
|
|
}
|
|
|
|
|
|
- var node = doc.SelectSingleNode("//p:spPr/a:solidFill/a:schemeClr | //p:style/a:fillRef/a:schemeClr", GetXmlnsManager(doc.NameTable));
|
|
|
+ var node = doc.SelectSingleNode("//p:spPr/a:solidFill/a:schemeClr | //p:style/a:fillRef/a:schemeClr", xmlnsManager);
|
|
|
if (node != null && node.HasChildNodes)
|
|
|
{
|
|
|
//调和颜色
|
|
@@ -678,21 +742,21 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(nodeXml);
|
|
|
- XmlNode borderw = doc.SelectSingleNode("//p:spPr/a:ln/@w", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode borderw = doc.SelectSingleNode("//p:spPr/a:ln/@w", xmlnsManager);
|
|
|
if (borderw != null)
|
|
|
{
|
|
|
borderWidth = int.Parse(borderw.Value) / 12700;
|
|
|
}
|
|
|
//边框颜色
|
|
|
string borderColor = null;
|
|
|
- XmlNode borderc = doc.SelectSingleNode("//p:spPr/a:ln/a:solidFill/a:srgbClr/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode borderc = doc.SelectSingleNode("//p:spPr/a:ln/a:solidFill/a:srgbClr/@val", xmlnsManager);
|
|
|
if (borderc == null)
|
|
|
{
|
|
|
- borderc = doc.SelectSingleNode("//p:spPr/a:ln/a:solidFill/a:schemeClr/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ borderc = doc.SelectSingleNode("//p:spPr/a:ln/a:solidFill/a:schemeClr/@val", xmlnsManager);
|
|
|
}
|
|
|
if (borderc == null)
|
|
|
{
|
|
|
- borderc = doc.SelectSingleNode("//p:style/a:lnRef/a:schemeClr/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ borderc = doc.SelectSingleNode("//p:style/a:lnRef/a:schemeClr/@val", xmlnsManager);
|
|
|
}
|
|
|
if (borderc != null)
|
|
|
{
|
|
@@ -704,7 +768,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
borderColor = borderc.Value;
|
|
|
}
|
|
|
- var node = doc.SelectSingleNode("//p:style/a:lnRef/a:schemeClr | //p:spPr/a:ln/a:solidFill/a:schemeClr", GetXmlnsManager(doc.NameTable));
|
|
|
+ var node = doc.SelectSingleNode("//p:style/a:lnRef/a:schemeClr | //p:spPr/a:ln/a:solidFill/a:schemeClr", xmlnsManager);
|
|
|
if (node != null && node.HasChildNodes)
|
|
|
{
|
|
|
//调和颜色
|
|
@@ -713,7 +777,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
|
|
|
//边框类型
|
|
|
- XmlNode borderT = doc.SelectSingleNode("//p:spPr/a:ln/a:prstDash/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode borderT = doc.SelectSingleNode("//p:spPr/a:ln/a:prstDash/@val", xmlnsManager);
|
|
|
var strokeDasharray = "0";
|
|
|
var borderType = "";
|
|
|
if (borderT != null)
|
|
@@ -805,53 +869,53 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
TEAMModelOS.SDK.Helper.Common.ColorHelper.ColorConverter converter = new TEAMModelOS.SDK.Helper.Common.ColorHelper.ColorConverter();
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(nodeXml);
|
|
|
- XmlNode lumMod = doc.SelectSingleNode("//a:lumMod/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode lumMod = doc.SelectSingleNode("//a:lumMod/@val", xmlnsManager);
|
|
|
if (lumMod != null)
|
|
|
{
|
|
|
colorHex = converter.SetLuminanceMod(colorHex, double.Parse(lumMod.Value));
|
|
|
}
|
|
|
- XmlNode lumOff = doc.SelectSingleNode("//a:lumOff/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode lumOff = doc.SelectSingleNode("//a:lumOff/@val", xmlnsManager);
|
|
|
if (lumOff != null)
|
|
|
{
|
|
|
colorHex = converter.SetLuminanceOff(colorHex, double.Parse(lumOff.Value));
|
|
|
}
|
|
|
- XmlNode satMod = doc.SelectSingleNode("//a:satMod/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode satMod = doc.SelectSingleNode("//a:satMod/@val", xmlnsManager);
|
|
|
if (satMod != null)
|
|
|
{
|
|
|
colorHex = converter.SetSaturationMod(colorHex, double.Parse(satMod.Value));
|
|
|
}
|
|
|
- XmlNode satOff = doc.SelectSingleNode("//a:satOff/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode satOff = doc.SelectSingleNode("//a:satOff/@val", xmlnsManager);
|
|
|
if (satOff != null)
|
|
|
{
|
|
|
colorHex = converter.SetSaturationOff(colorHex, double.Parse(satOff.Value));
|
|
|
}
|
|
|
- XmlNode hueOff = doc.SelectSingleNode("//a:hueOff/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode hueOff = doc.SelectSingleNode("//a:hueOff/@val", xmlnsManager);
|
|
|
if (hueOff != null)
|
|
|
{
|
|
|
colorHex = converter.SetHueOff(colorHex, double.Parse(hueOff.Value));
|
|
|
}
|
|
|
- XmlNode hueMod = doc.SelectSingleNode("//a:hueMod/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode hueMod = doc.SelectSingleNode("//a:hueMod/@val", xmlnsManager);
|
|
|
if (hueMod != null)
|
|
|
{
|
|
|
colorHex = converter.SetHueMod(colorHex, double.Parse(hueMod.Value));
|
|
|
}
|
|
|
- XmlNode alphaOff = doc.SelectSingleNode("//a:alphaOff/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode alphaOff = doc.SelectSingleNode("//a:alphaOff/@val", xmlnsManager);
|
|
|
if (alphaOff != null)
|
|
|
{
|
|
|
// Color color= ColorTranslator.FromHtml("#" + colorHex);
|
|
|
// color = Color.FromArgb(byte.Parse(int.Parse(alpha.Value)/100000+""),color.R,color.G,color.B);
|
|
|
}
|
|
|
- XmlNode shade = doc.SelectSingleNode("//a:shade/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode shade = doc.SelectSingleNode("//a:shade/@val", xmlnsManager);
|
|
|
if (shade != null)
|
|
|
{
|
|
|
colorHex = converter.SetShade(colorHex, double.Parse(shade.Value));
|
|
|
}
|
|
|
- XmlNode tint = doc.SelectSingleNode("//a:tint/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode tint = doc.SelectSingleNode("//a:tint/@val", xmlnsManager);
|
|
|
if (tint != null)
|
|
|
{
|
|
|
colorHex = converter.SetTint(colorHex, double.Parse(tint.Value));
|
|
|
}
|
|
|
- XmlNode alpha = doc.SelectSingleNode("//a:alpha/@val", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode alpha = doc.SelectSingleNode("//a:alpha/@val", xmlnsManager);
|
|
|
if (alpha != null)
|
|
|
{
|
|
|
// Color color= ColorTranslator.FromHtml("#" + colorHex);
|
|
@@ -888,13 +952,13 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(nodeXml);
|
|
|
- XmlNode xfrm = doc.SelectSingleNode("//a:xfrm", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode xfrm = doc.SelectSingleNode("//a:xfrm", xmlnsManager);
|
|
|
if (xfrm == null)
|
|
|
{
|
|
|
- xfrm = slideLayoutSpNode.SelectSingleNode("//a:xfrm", GetXmlnsManager(slideLayoutSpNode.NameTable));
|
|
|
+ xfrm = slideLayoutSpNode.SelectSingleNode("//a:xfrm", xmlnsManager);
|
|
|
if (xfrm == null)
|
|
|
{
|
|
|
- xfrm = slideMasterSpNode.SelectSingleNode("//a:xfrm", GetXmlnsManager(slideMasterSpNode.NameTable));
|
|
|
+ xfrm = slideMasterSpNode.SelectSingleNode("//a:xfrm",xmlnsManager);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -917,33 +981,33 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
//XmlDocument doc = new XmlDocument();
|
|
|
//doc.LoadXml(nodeXml);
|
|
|
BuChar bchar = new BuChar();
|
|
|
- // XmlNode pPr = nodeXml.SelectSingleNode("//a:pPr", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ // XmlNode pPr = nodeXml.SelectSingleNode("//a:pPr",xmlnsManager);
|
|
|
int lvl = 0;
|
|
|
- XmlNode lvlNode = nodeXml.SelectSingleNode("//a:pPr/@lvl", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode lvlNode = nodeXml.SelectSingleNode("//a:pPr/@lvl",xmlnsManager);
|
|
|
if (lvlNode != null)
|
|
|
{
|
|
|
lvl = int.Parse(lvlNode.Value);
|
|
|
}
|
|
|
- var buCharNode = nodeXml.SelectSingleNode("//a:pPr/a:buChar/@char", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ var buCharNode = nodeXml.SelectSingleNode("//a:pPr/a:buChar/@char",xmlnsManager);
|
|
|
if (buCharNode != null)
|
|
|
{
|
|
|
- XmlNode buFontNode = nodeXml.SelectSingleNode("//a:pPr/a:buFont", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode buFontNode = nodeXml.SelectSingleNode("//a:pPr/a:buFont",xmlnsManager);
|
|
|
if (buFontNode != null)
|
|
|
{
|
|
|
var marginLeft = 328600 * 96 / 914400 * lvl;
|
|
|
var marginRight = 0;
|
|
|
var typeface = "";
|
|
|
- XmlNode marLNode = nodeXml.SelectSingleNode("//a:pPr/@marL", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode marLNode = nodeXml.SelectSingleNode("//a:pPr/@marL",xmlnsManager);
|
|
|
if (marLNode != null)
|
|
|
{
|
|
|
marginLeft = int.Parse(marLNode.Value) * 96 / 914400;
|
|
|
}
|
|
|
- XmlNode pitchFamilyNode = nodeXml.SelectSingleNode("//a:pPr/a:buFont/@pitchFamily", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode pitchFamilyNode = nodeXml.SelectSingleNode("//a:pPr/a:buFont/@pitchFamily",xmlnsManager);
|
|
|
if (pitchFamilyNode != null)
|
|
|
{
|
|
|
marginRight = int.Parse(pitchFamilyNode.Value);
|
|
|
}
|
|
|
- XmlNode typefaceNode = nodeXml.SelectSingleNode("//a:pPr/a:buFont/@typeface", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode typefaceNode = nodeXml.SelectSingleNode("//a:pPr/a:buFont/@typeface",xmlnsManager);
|
|
|
if (typefaceNode != null)
|
|
|
{
|
|
|
typeface = typefaceNode.Value;
|
|
@@ -966,7 +1030,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
if (string.IsNullOrEmpty(bchar.Buchar) && typeNode != null && typeNode.Value.Equals("body"))
|
|
|
{
|
|
|
string bucharPath = "//p:bodyStyle/a:lvl" + (lvl + 1) + "pPr/a:buChar/@char";
|
|
|
- XmlNode buchar = SlideMasterTextStyles.SelectSingleNode(bucharPath, GetXmlnsManager(SlideMasterTextStyles.NameTable));
|
|
|
+ XmlNode buchar = SlideMasterTextStyles.SelectSingleNode(bucharPath,xmlnsManager);
|
|
|
if (buchar != null)
|
|
|
{
|
|
|
bchar.Buchar = buchar.Value;
|
|
@@ -976,7 +1040,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
if (string.IsNullOrEmpty(bchar.Typeface) && typeNode != null && typeNode.Value.Equals("body"))
|
|
|
{
|
|
|
string facePath = "//p:bodyStyle/a:lvl" + (lvl + 1) + "pPr/a:buFont/@typeface";
|
|
|
- XmlNode face = SlideMasterTextStyles.SelectSingleNode(facePath, GetXmlnsManager(SlideMasterTextStyles.NameTable));
|
|
|
+ XmlNode face = SlideMasterTextStyles.SelectSingleNode(facePath,xmlnsManager);
|
|
|
|
|
|
if (face != null)
|
|
|
{
|
|
@@ -987,7 +1051,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
if (bchar.FontSize == 0 && typeNode != null && (typeNode.Value.Equals("body") || typeNode.Value.Equals("sldNum")))
|
|
|
{
|
|
|
string sizePath = "//p:bodyStyle/a:lvl" + (lvl + 1) + "pPr/a:defRPr/@sz";
|
|
|
- XmlNode size = SlideMasterTextStyles.SelectSingleNode(sizePath, GetXmlnsManager(SlideMasterTextStyles.NameTable));
|
|
|
+ XmlNode size = SlideMasterTextStyles.SelectSingleNode(sizePath,xmlnsManager);
|
|
|
|
|
|
if (sizePath != null)
|
|
|
{
|
|
@@ -999,7 +1063,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
if (hasBuChar)
|
|
|
{
|
|
|
string sizePath = "//p:bodyStyle/a:lvl" + (lvl + 1) + "pPr/a:defRPr/@sz";
|
|
|
- XmlNode size = SlideMasterTextStyles.SelectSingleNode(sizePath, GetXmlnsManager(SlideMasterTextStyles.NameTable));
|
|
|
+ XmlNode size = SlideMasterTextStyles.SelectSingleNode(sizePath,xmlnsManager);
|
|
|
|
|
|
if (sizePath != null)
|
|
|
{
|
|
@@ -1007,14 +1071,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
|
|
|
}
|
|
|
string facePath = "//p:bodyStyle/a:lvl" + (lvl + 1) + "pPr/a:buFont/@typeface";
|
|
|
- XmlNode face = SlideMasterTextStyles.SelectSingleNode(facePath, GetXmlnsManager(SlideMasterTextStyles.NameTable));
|
|
|
+ XmlNode face = SlideMasterTextStyles.SelectSingleNode(facePath,xmlnsManager);
|
|
|
|
|
|
if (face != null)
|
|
|
{
|
|
|
bchar.Typeface = face.Value;
|
|
|
}
|
|
|
string bucharPath = "//p:bodyStyle/a:lvl" + (lvl + 1) + "pPr/a:buChar/@char";
|
|
|
- XmlNode buchar = SlideMasterTextStyles.SelectSingleNode(bucharPath, GetXmlnsManager(SlideMasterTextStyles.NameTable));
|
|
|
+ XmlNode buchar = SlideMasterTextStyles.SelectSingleNode(bucharPath,xmlnsManager);
|
|
|
if (buchar != null)
|
|
|
{
|
|
|
bchar.Buchar = buchar.Value;
|
|
@@ -1043,17 +1107,17 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
//XmlDocument doc = new XmlDocument();
|
|
|
//doc.LoadXml(nodeXml);
|
|
|
- XmlNode algn = nodeXml.SelectSingleNode("//a:pPr/@algn", GetXmlnsManager(nodeXml.NameTable));
|
|
|
+ XmlNode algn = nodeXml.SelectSingleNode("//a:pPr/@algn",xmlnsManager);
|
|
|
if (algn == null)
|
|
|
{
|
|
|
if (slideLayoutSpNode != null)
|
|
|
{
|
|
|
- algn = slideLayoutSpNode.SelectSingleNode("//p:txBody/a:p/a:pPr/@algn", GetXmlnsManager(slideLayoutSpNode.NameTable));
|
|
|
+ algn = slideLayoutSpNode.SelectSingleNode("//p:txBody/a:p/a:pPr/@algn", xmlnsManager);
|
|
|
}
|
|
|
|
|
|
if (algn == null && slideMasterSpNode != null)
|
|
|
{
|
|
|
- algn = slideMasterSpNode.SelectSingleNode("//p:txBody/a:p/a:pPr/@algn", GetXmlnsManager(slideMasterSpNode.NameTable));
|
|
|
+ algn = slideMasterSpNode.SelectSingleNode("//p:txBody/a:p/a:pPr/@algn",xmlnsManager);
|
|
|
}
|
|
|
if (algn == null && typeNode != null)
|
|
|
{
|
|
@@ -1063,14 +1127,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
case "subTitle":
|
|
|
case "ctrTitle":
|
|
|
//doc.LoadXml(slideMasterStyle.TypeTable.OuterXml);
|
|
|
- algn = slideMasterTextStyles.SelectSingleNode("//p:titleStyle/a:lvl1pPr/@algn", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ algn = slideMasterTextStyles.SelectSingleNode("//p:titleStyle/a:lvl1pPr/@algn",xmlnsManager);
|
|
|
break;
|
|
|
case "body":
|
|
|
- algn = slideMasterTextStyles.SelectSingleNode("//p:bodyStyle/a:lvl1pPr/@algn", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ algn = slideMasterTextStyles.SelectSingleNode("//p:bodyStyle/a:lvl1pPr/@algn",xmlnsManager);
|
|
|
break;
|
|
|
default:
|
|
|
// doc.LoadXml(slideMasterStyle.TypeTable.OuterXml);
|
|
|
- algn = slideMasterTextStyles.SelectSingleNode("//p:otherStyle/a:lvl1pPr/@algn", GetXmlnsManager(slideMasterTextStyles.NameTable));
|
|
|
+ algn = slideMasterTextStyles.SelectSingleNode("//p:otherStyle/a:lvl1pPr/@algn",xmlnsManager);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -1110,16 +1174,16 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(xmlNode);
|
|
|
|
|
|
- XmlNode anchor = doc.SelectSingleNode("//p:txBody/a:bodyPr/@anchor", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode anchor = doc.SelectSingleNode("//p:txBody/a:bodyPr/@anchor", xmlnsManager);
|
|
|
if (anchor == null)
|
|
|
{
|
|
|
if (slideLayoutSpNode != null)
|
|
|
{
|
|
|
- anchor = slideLayoutSpNode.SelectSingleNode("//p:txBody/a:bodyPr/@anchor", GetXmlnsManager(slideLayoutSpNode.NameTable));
|
|
|
+ anchor = slideLayoutSpNode.SelectSingleNode("//p:txBody/a:bodyPr/@anchor", xmlnsManager);
|
|
|
}
|
|
|
if (anchor == null && slideMasterSpNode != null)
|
|
|
{
|
|
|
- anchor = slideMasterSpNode.SelectSingleNode("//p:txBody/a:bodyPr/@anchor", GetXmlnsManager(slideMasterSpNode.NameTable));
|
|
|
+ anchor = slideMasterSpNode.SelectSingleNode("//p:txBody/a:bodyPr/@anchor",xmlnsManager);
|
|
|
}
|
|
|
}
|
|
|
if (anchor != null)
|
|
@@ -1156,7 +1220,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(xml);
|
|
|
- XmlNode txStyles = doc.SelectSingleNode("//p:txStyles", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode txStyles = doc.SelectSingleNode("//p:txStyles", xmlnsManager);
|
|
|
doc.LoadXml(txStyles.OuterXml);
|
|
|
return doc;
|
|
|
}
|
|
@@ -1170,7 +1234,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
{
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
doc.LoadXml(xml);
|
|
|
- XmlNodeList spTreeNodes = doc.SelectNodes("//p:cSld/p:spTree/child::*", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNodeList spTreeNodes = doc.SelectNodes("//p:cSld/p:spTree/child::*", xmlnsManager);
|
|
|
|
|
|
XmlDocument idTable = new XmlDocument();
|
|
|
//添加根节点
|
|
@@ -1203,9 +1267,9 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
XmlDocument docNode = new XmlDocument();
|
|
|
docNode.LoadXml(spnode.OuterXml);
|
|
|
- XmlNode id = spnode.SelectSingleNode("./p:nvSpPr/p:cNvPr/@id", GetXmlnsManager(docNode.NameTable));
|
|
|
- XmlNode idx = spnode.SelectSingleNode("./p:nvSpPr/p:nvPr/p:ph/@idx", GetXmlnsManager(docNode.NameTable));
|
|
|
- XmlNode type = spnode.SelectSingleNode("./p:nvSpPr/p:nvPr/p:ph/@type", GetXmlnsManager(docNode.NameTable));
|
|
|
+ XmlNode id = spnode.SelectSingleNode("./p:nvSpPr/p:cNvPr/@id", xmlnsManager);
|
|
|
+ XmlNode idx = spnode.SelectSingleNode("./p:nvSpPr/p:nvPr/p:ph/@idx", xmlnsManager);
|
|
|
+ XmlNode type = spnode.SelectSingleNode("./p:nvSpPr/p:nvPr/p:ph/@type", xmlnsManager);
|
|
|
|
|
|
var cnode = spnode.ChildNodes;
|
|
|
StringBuilder builder = new StringBuilder();
|
|
@@ -1275,7 +1339,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
http://msdn.microsoft.com/en-us/library/cc964302(v=office.12).aspx
|
|
|
*/
|
|
|
//使用xPath选择需要的节点
|
|
|
- XmlNode node_sld = doc.SelectSingleNode("//p:sld/p:cSld/p:bg/p:bgPr/a:solidFill", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode node_sld = doc.SelectSingleNode("//p:sld/p:cSld/p:bg/p:bgPr/a:solidFill", xmlnsManager);
|
|
|
if (node_sld != null)
|
|
|
{
|
|
|
SolidFill compositeElement = new SolidFill(node_sld.OuterXml);
|
|
@@ -1290,7 +1354,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
return fill;
|
|
|
}
|
|
|
|
|
|
- node_sld = doc.SelectSingleNode("//p:sld/p:cSld/p:bg/p:bgPr/a:blipFill", GetXmlnsManager(doc.NameTable));
|
|
|
+ node_sld = doc.SelectSingleNode("//p:sld/p:cSld/p:bg/p:bgPr/a:blipFill", xmlnsManager);
|
|
|
if (node_sld != null)
|
|
|
{
|
|
|
DocumentFormat.OpenXml.Drawing.BlipFill blipFill = new DocumentFormat.OpenXml.Drawing.BlipFill(node_sld.OuterXml);
|
|
@@ -1325,7 +1389,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
styleColors = colors;
|
|
|
}
|
|
|
doc.LoadXml(SlideLayoutXml);
|
|
|
- XmlNode node_sldLayout = doc.SelectSingleNode("//p:sldLayout/p:cSld/p:bg/p:bgPr/a:solidFill", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode node_sldLayout = doc.SelectSingleNode("//p:sldLayout/p:cSld/p:bg/p:bgPr/a:solidFill", xmlnsManager);
|
|
|
if (node_sldLayout != null)
|
|
|
{
|
|
|
SolidFill compositeElement = new SolidFill(node_sldLayout.OuterXml);
|
|
@@ -1339,7 +1403,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
new Model.PowerPoint.Fill { Type = 1, Color = colorHex };
|
|
|
return fill;
|
|
|
}
|
|
|
- node_sldLayout = doc.SelectSingleNode("//p:sldLayout/p:cSld/p:bg/p:bgRef", GetXmlnsManager(doc.NameTable));
|
|
|
+ node_sldLayout = doc.SelectSingleNode("//p:sldLayout/p:cSld/p:bg/p:bgRef", xmlnsManager);
|
|
|
if (node_sldLayout != null)
|
|
|
{
|
|
|
BackgroundStyleReference compositeElement = new BackgroundStyleReference(node_sldLayout.OuterXml);
|
|
@@ -1355,7 +1419,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
}
|
|
|
string slideMasterXml = slideMaster.OuterXml;
|
|
|
doc.LoadXml(slideMasterXml);
|
|
|
- XmlNode node_sldMaster = doc.SelectSingleNode("//p:sldMaster/p:cSld/p:bg/p:bgPr/a:solidFill", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode node_sldMaster = doc.SelectSingleNode("//p:sldMaster/p:cSld/p:bg/p:bgPr/a:solidFill", xmlnsManager);
|
|
|
if (node_sldMaster != null)
|
|
|
{
|
|
|
SolidFill compositeElement = new SolidFill(node_sldMaster.OuterXml);
|
|
@@ -1368,7 +1432,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
new Model.PowerPoint.Fill { Type = 1, Color = colorHex };
|
|
|
return fill;
|
|
|
}
|
|
|
- node_sldMaster = doc.SelectSingleNode("//p:sldMaster/p:cSld/p:bg/p:bgRef", GetXmlnsManager(doc.NameTable));
|
|
|
+ node_sldMaster = doc.SelectSingleNode("//p:sldMaster/p:cSld/p:bg/p:bgRef", xmlnsManager);
|
|
|
if (node_sldMaster != null)
|
|
|
{
|
|
|
BackgroundStyleReference compositeElement = new BackgroundStyleReference(node_sldMaster.OuterXml);
|
|
@@ -1382,7 +1446,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
return fill;
|
|
|
}
|
|
|
doc.LoadXml(slideMaster.OuterXml);
|
|
|
- node_sld = doc.SelectSingleNode("//p:sldMaster/p:cSld/p:bg/p:bgPr/a:blipFill", GetXmlnsManager(doc.NameTable));
|
|
|
+ node_sld = doc.SelectSingleNode("//p:sldMaster/p:cSld/p:bg/p:bgPr/a:blipFill", xmlnsManager);
|
|
|
if (node_sld != null)
|
|
|
{
|
|
|
|
|
@@ -1418,14 +1482,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
|
|
|
private static FillStyle GetFillStyle(XmlDocument doc)
|
|
|
{
|
|
|
- XmlNode fillRect_node = doc.SelectSingleNode("//a:stretch/a:fillRect", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode fillRect_node = doc.SelectSingleNode("//a:stretch/a:fillRect", xmlnsManager);
|
|
|
FillStyle fillStyle = new FillStyle();
|
|
|
if (fillRect_node != null)
|
|
|
{
|
|
|
- XmlNode left = doc.SelectSingleNode("//a:stretch/a:fillRect/@l", GetXmlnsManager(doc.NameTable));
|
|
|
- XmlNode top = doc.SelectSingleNode("//a:stretch/a:fillRect/@t", GetXmlnsManager(doc.NameTable));
|
|
|
- XmlNode right = doc.SelectSingleNode("//a:stretch/a:fillRect/@r", GetXmlnsManager(doc.NameTable));
|
|
|
- XmlNode bottom = doc.SelectSingleNode("//a:stretch/a:fillRect/@b", GetXmlnsManager(doc.NameTable));
|
|
|
+ XmlNode left = doc.SelectSingleNode("//a:stretch/a:fillRect/@l", xmlnsManager);
|
|
|
+ XmlNode top = doc.SelectSingleNode("//a:stretch/a:fillRect/@t", xmlnsManager);
|
|
|
+ XmlNode right = doc.SelectSingleNode("//a:stretch/a:fillRect/@r", xmlnsManager);
|
|
|
+ XmlNode bottom = doc.SelectSingleNode("//a:stretch/a:fillRect/@b", xmlnsManager);
|
|
|
if (left != null)
|
|
|
{
|
|
|
fillStyle.Left = int.Parse(left.Value);
|