v1.4.0
This commit is contained in:
parent
1abc2028fe
commit
6eec96d84d
|
|
@ -69,7 +69,9 @@ _Annotation(docx);
|
||||||
_Faq(docx);
|
_Faq(docx);
|
||||||
|
|
||||||
///目录
|
///目录
|
||||||
docx.AddTableContent(paragraphTitle, 1, 3);
|
content := docx.AddTableContent(paragraphTitle, 1, 3);
|
||||||
|
docx.AddPageBreak(content.node_);
|
||||||
|
|
||||||
|
|
||||||
v := docx.SaveAs('', TOfficeApi().CurCodePageToGBK('DocxFile使用帮助.docx'));
|
v := docx.SaveAs('', TOfficeApi().CurCodePageToGBK('DocxFile使用帮助.docx'));
|
||||||
println('Test Over!\n Save {}: {},time={}秒', file, v, mtoc);
|
println('Test Over!\n Save {}: {},time={}秒', file, v, mtoc);
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
||||||
// Version 1.3.9
|
// Version 1.4.0
|
||||||
|
|
||||||
Function TOfficeObj(n);
|
Function TOfficeObj(n);
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -167,6 +167,8 @@ Begin
|
||||||
return new TNumPr();
|
return new TNumPr();
|
||||||
"ttextbox":
|
"ttextbox":
|
||||||
return new TTextBox();
|
return new TTextBox();
|
||||||
|
"twhyperlinkimpl":
|
||||||
|
return new TWHyperLinkImpl();
|
||||||
"twppr":
|
"twppr":
|
||||||
return new TwpPr();
|
return new TwpPr();
|
||||||
"tcnvgraphicframepr":
|
"tcnvgraphicframepr":
|
||||||
|
|
@ -285,10 +287,10 @@ Begin
|
||||||
return new TDocxStyle();
|
return new TDocxStyle();
|
||||||
"tdocpartobj":
|
"tdocpartobj":
|
||||||
return new TDocPartObj();
|
return new TDocPartObj();
|
||||||
"tstdpr":
|
"tsdtpr":
|
||||||
return new TStdPr();
|
return new TSdtPr();
|
||||||
"tstdendpr":
|
"tsdtendpr":
|
||||||
return new TStdEndPr();
|
return new TSdtEndPr();
|
||||||
"tsdtcontent":
|
"tsdtcontent":
|
||||||
return new TSdtContent();
|
return new TSdtContent();
|
||||||
"ttablecontentimpl":
|
"ttablecontentimpl":
|
||||||
|
|
@ -5843,10 +5845,10 @@ type TwrPr=class(NodeInfo)
|
||||||
Begin
|
Begin
|
||||||
HandleChildren();
|
HandleChildren();
|
||||||
return array(("field":"rFont","name":rFont.NodeName,"obj":rFont,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TwFont")
|
return array(("field":"rFont","name":rFont.NodeName,"obj":rFont,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TwFont")
|
||||||
,("field":"Bold","name":"w:b","obj":Bold,"attrEx":"","nodeType":"empty","attrName":"", "desc":"黑体", "class":"")
|
,("field":"Bold","name":"w:b","obj":Bold,"attrEx":"w:val","nodeType":"empty","attrName":"", "desc":"黑体", "class":"")
|
||||||
,("field":"noProof","name":"w:noProof","obj":noProof,"attrEx":"","nodeType":"empty","attrName":"", "desc":"不检查拼写或语法)", "class":"")
|
,("field":"noProof","name":"w:noProof","obj":noProof,"attrEx":"","nodeType":"empty","attrName":"", "desc":"不检查拼写或语法)", "class":"")
|
||||||
,("field":"Color","name":"w:color","obj":Color,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"字体颜色", "class":"")
|
,("field":"Color","name":"w:color","obj":Color,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"字体颜色", "class":"")
|
||||||
,("field":"bCs","name":"w:bCs","obj":bCs,"attrEx":"","nodeType":"empty","attrName":"", "desc":"复杂脚本黑体", "class":"")
|
,("field":"bCs","name":"w:bCs","obj":bCs,"attrEx":"w:val","nodeType":"empty","attrName":"", "desc":"复杂脚本黑体", "class":"")
|
||||||
,("field":"Italic","name":"w:i","obj":Italic,"attrEx":"","nodeType":"empty","attrName":"", "desc":"斜体", "class":"")
|
,("field":"Italic","name":"w:i","obj":Italic,"attrEx":"","nodeType":"empty","attrName":"", "desc":"斜体", "class":"")
|
||||||
,("field":"Strike","name":"w:strike","obj":Strike,"attrEx":"","nodeType":"empty","attrName":"", "desc":"单个删除线", "class":"")
|
,("field":"Strike","name":"w:strike","obj":Strike,"attrEx":"","nodeType":"empty","attrName":"", "desc":"单个删除线", "class":"")
|
||||||
,("field":"dStrike","name":"w:dstrike","obj":dStrike,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"两个删除线", "class":"")
|
,("field":"dStrike","name":"w:dstrike","obj":dStrike,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"两个删除线", "class":"")
|
||||||
|
|
@ -5859,6 +5861,8 @@ type TwrPr=class(NodeInfo)
|
||||||
,("field":"Lang","name":"w:lang","obj":Lang,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"处理使用拉丁字符的本次运行内容时用于检查拼写和语法的语言.", "class":"")
|
,("field":"Lang","name":"w:lang","obj":Lang,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"处理使用拉丁字符的本次运行内容时用于检查拼写和语法的语言.", "class":"")
|
||||||
,("field":"bidi","name":"w:lang","obj":bidi,"attrEx":"w:bidi","nodeType":"","attrName":"", "desc":"处理使用复杂脚本字符的运行内容时应使用的语言.", "class":"")
|
,("field":"bidi","name":"w:lang","obj":bidi,"attrEx":"w:bidi","nodeType":"","attrName":"", "desc":"处理使用复杂脚本字符的运行内容时应使用的语言.", "class":"")
|
||||||
,("field":"Del","name":Del.NodeName,"obj":Del,"attrEx":"","nodeType":"","attrName":"", "desc":"disable", "class":"TOptInfo")
|
,("field":"Del","name":Del.NodeName,"obj":Del,"attrEx":"","nodeType":"","attrName":"", "desc":"disable", "class":"TOptInfo")
|
||||||
|
,("field":"StyleId","name":"w:rStyle","obj":StyleId,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"disable", "class":"")
|
||||||
|
,("field":"WebHidden","name":"w:webHidden","obj":WebHidden,"attrEx":"w:val","nodeType":"empty","attrName":"", "desc":"disable", "class":"")
|
||||||
) union ExtNodes;
|
) union ExtNodes;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
@ -5909,6 +5913,8 @@ type TwrPr=class(NodeInfo)
|
||||||
Lang;
|
Lang;
|
||||||
bidi;
|
bidi;
|
||||||
Del;
|
Del;
|
||||||
|
StyleId;
|
||||||
|
WebHidden;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
|
|
@ -6003,6 +6009,50 @@ type TTextBoxImpl=class(NodeInfo)
|
||||||
P;
|
P;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////
|
||||||
|
/// TWHyperLinkImpl
|
||||||
|
///////////////////////////////////////////////////////////////
|
||||||
|
type TWHyperLinkImpl=class(NodeInfo)
|
||||||
|
Function Create(); overload;
|
||||||
|
Begin
|
||||||
|
Create(nil, 'w:hyperlink');
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function Create(p, name); overload;
|
||||||
|
Begin
|
||||||
|
Class(NodeInfo).Create(p, name);
|
||||||
|
Init();
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function Init();
|
||||||
|
Begin
|
||||||
|
//TODO...
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function InitRootNode(node);
|
||||||
|
Begin
|
||||||
|
RootObj := node;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function GetAttrs(); override;
|
||||||
|
Begin
|
||||||
|
HandleAttrs();
|
||||||
|
return array(("Anchor", "w:anchor", Anchor, ""),("History", "w:history", History, "")) union ExtAttr;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Function GetChildren(); override;
|
||||||
|
Begin
|
||||||
|
HandleChildren();
|
||||||
|
return ExtNodes;
|
||||||
|
End;
|
||||||
|
|
||||||
|
//Attributes
|
||||||
|
Anchor;
|
||||||
|
History;
|
||||||
|
|
||||||
|
//Nodes
|
||||||
|
End;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
/// TwpPr
|
/// TwpPr
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
|
|
@ -9320,9 +9370,9 @@ type TDocPartObj=class(NodeInfo)
|
||||||
End;
|
End;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
/// TStdPr
|
/// TSdtPr
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
type TStdPr=class(NodeInfo)
|
type TSdtPr=class(NodeInfo)
|
||||||
Function Create(); overload;
|
Function Create(); overload;
|
||||||
Begin
|
Begin
|
||||||
Create(nil, 'w:sdtPr');
|
Create(nil, 'w:sdtPr');
|
||||||
|
|
@ -9372,9 +9422,9 @@ type TStdPr=class(NodeInfo)
|
||||||
End;
|
End;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
/// TStdEndPr
|
/// TSdtEndPr
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
type TStdEndPr=class(NodeInfo)
|
type TSdtEndPr=class(NodeInfo)
|
||||||
Function Create(); overload;
|
Function Create(); overload;
|
||||||
Begin
|
Begin
|
||||||
Create(nil, 'w:sdtEndPr');
|
Create(nil, 'w:sdtEndPr');
|
||||||
|
|
@ -9476,18 +9526,18 @@ type TTableContentImpl=class(NodeInfo)
|
||||||
|
|
||||||
Function Init();
|
Function Init();
|
||||||
Begin
|
Begin
|
||||||
stdPr := new TStdPr(self, 'w:sdtPr');
|
sdtPr := new TSdtPr(self, 'w:sdtPr');
|
||||||
stdEndPr := new TStdEndPr(self, 'w:sdtEndPr');
|
sdtEndPr := new TSdtEndPr(self, 'w:sdtEndPr');
|
||||||
SdtContent := new TSdtContent(self, 'w:sdtContent');
|
sdtContent := new TSdtContent(self, 'w:sdtContent');
|
||||||
//TODO...
|
//TODO...
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function InitRootNode(node);
|
Function InitRootNode(node);
|
||||||
Begin
|
Begin
|
||||||
RootObj := node;
|
RootObj := node;
|
||||||
stdPr.InitRootNode(node);
|
sdtPr.InitRootNode(node);
|
||||||
stdEndPr.InitRootNode(node);
|
sdtEndPr.InitRootNode(node);
|
||||||
SdtContent.InitRootNode(node);
|
sdtContent.InitRootNode(node);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function GetAttrs(); override;
|
Function GetAttrs(); override;
|
||||||
|
|
@ -9499,18 +9549,18 @@ type TTableContentImpl=class(NodeInfo)
|
||||||
Function GetChildren(); override;
|
Function GetChildren(); override;
|
||||||
Begin
|
Begin
|
||||||
HandleChildren();
|
HandleChildren();
|
||||||
return array(("field":"stdPr","name":stdPr.NodeName,"obj":stdPr,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TStdPr")
|
return array(("field":"sdtPr","name":sdtPr.NodeName,"obj":sdtPr,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TSdtPr")
|
||||||
,("field":"stdEndPr","name":stdEndPr.NodeName,"obj":stdEndPr,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TStdEndPr")
|
,("field":"sdtEndPr","name":sdtEndPr.NodeName,"obj":sdtEndPr,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TSdtEndPr")
|
||||||
,("field":"SdtContent","name":SdtContent.NodeName,"obj":SdtContent,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TSdtContent")
|
,("field":"sdtContent","name":sdtContent.NodeName,"obj":sdtContent,"attrEx":"","nodeType":"","attrName":"", "desc":"", "class":"TSdtContent")
|
||||||
) union ExtNodes;
|
) union ExtNodes;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
//Attributes
|
//Attributes
|
||||||
|
|
||||||
//Nodes
|
//Nodes
|
||||||
stdPr;
|
sdtPr;
|
||||||
stdEndPr;
|
sdtEndPr;
|
||||||
SdtContent;
|
sdtContent;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
|
|
@ -10782,6 +10832,20 @@ End;
|
||||||
// 'w:rPr', 'w:sectPr', 'w:pPrChange'
|
// 'w:rPr', 'w:sectPr', 'w:pPrChange'
|
||||||
|
|
||||||
//w:p
|
//w:p
|
||||||
|
Type TWHyperLink = Class(TWHyperLinkImpl)
|
||||||
|
Function AddRun(txt, newLine);
|
||||||
|
Begin
|
||||||
|
o := new TRun();
|
||||||
|
//o.Parent := self;
|
||||||
|
NewChildNode( array("field":"", "name":"w:r", "obj":o, "attrEx":"", "nodeType":"") );
|
||||||
|
if txt then
|
||||||
|
o.SetText(txt);
|
||||||
|
if newLine then
|
||||||
|
o.Br.Type := '';
|
||||||
|
return o;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
Type TParagraph = Class(DocObject, TParagraphImpl)
|
Type TParagraph = Class(DocObject, TParagraphImpl)
|
||||||
Function Create();overload;
|
Function Create();overload;
|
||||||
Begin
|
Begin
|
||||||
|
|
@ -10916,6 +10980,15 @@ Type TParagraph = Class(DocObject, TParagraphImpl)
|
||||||
o.Br.Type := '';
|
o.Br.Type := '';
|
||||||
return o;
|
return o;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
///段落添加<w:hyperlink>
|
||||||
|
///返回:TWHyperLink
|
||||||
|
Function AddHyperLink();
|
||||||
|
Begin
|
||||||
|
o := new TWHyperLink();
|
||||||
|
NewChildNode( array("field":"", "name":"w:r", "obj":o, "attrEx":"", "nodeType":"") );
|
||||||
|
return o;
|
||||||
|
End;
|
||||||
|
|
||||||
///在段落对象后面追加TRun对象
|
///在段落对象后面追加TRun对象
|
||||||
///返回TRun对象
|
///返回TRun对象
|
||||||
|
|
@ -12783,7 +12856,7 @@ Type TSectPr = Class
|
||||||
|
|
||||||
Function _Font2LineHeight(rPr, LineRatio);
|
Function _Font2LineHeight(rPr, LineRatio);
|
||||||
Begin
|
Begin
|
||||||
size := max(rPr.Size, rPr.szCs);
|
size := max(ifnil(rPr.Size) ? 0 : rPr.Size, ifnil(rPr.szCs) ? 0 : rPr.szCs);
|
||||||
if size = 0 then size := 21;//缺省五号字
|
if size = 0 then size := 21;//缺省五号字
|
||||||
if rPr.rFont.hint in array('eastAsia', 'zh-CN') or rPr.rFont.eastAsia <> '' then Begin
|
if rPr.rFont.hint in array('eastAsia', 'zh-CN') or rPr.rFont.eastAsia <> '' then Begin
|
||||||
return ceil(size*10/(LinePitch*LineRatio-200/3));
|
return ceil(size*10/(LinePitch*LineRatio-200/3));
|
||||||
|
|
@ -13773,7 +13846,7 @@ Type TDocumentBody = Class(DocObject)
|
||||||
sectPr.Append(p);
|
sectPr.Append(p);
|
||||||
numId := p.Format.NumPr.Value('numId');
|
numId := p.Format.NumPr.Value('numId');
|
||||||
lvlStr := p.Format.NumPr.Value('Level');
|
lvlStr := p.Format.NumPr.Value('Level');
|
||||||
if numId and lvlStr then Begin
|
if not ifnil(numId) and not ifnil(lvlStr) then Begin
|
||||||
ilvl := Class(TSXml).SafeStrToIntDef(lvlStr, -1);
|
ilvl := Class(TSXml).SafeStrToIntDef(lvlStr, -1);
|
||||||
if ilvl >= 0 and ilvl < 10 then Begin
|
if ilvl >= 0 and ilvl < 10 then Begin
|
||||||
if not istable(numIds[numId]) then
|
if not istable(numIds[numId]) then
|
||||||
|
|
@ -13799,7 +13872,7 @@ Type TDocumentBody = Class(DocObject)
|
||||||
r[ind]['Level'] := strtoint(level);
|
r[ind]['Level'] := strtoint(level);
|
||||||
r[ind]['Paragraph'] := p;
|
r[ind]['Paragraph'] := p;
|
||||||
r[ind]['Text'] := p.Text();
|
r[ind]['Text'] := p.Text();
|
||||||
r[ind]['numId'] := numId; //数字项目编号
|
r[ind]['numId'] := integer(numId); //数字项目编号
|
||||||
r[ind]['ilvl'] := ilvl; //级别
|
r[ind]['ilvl'] := ilvl; //级别
|
||||||
r[ind]['numArr'] := numArr; //累加数字编码
|
r[ind]['numArr'] := numArr; //累加数字编码
|
||||||
sectPr.Mark(ind);//标记段落
|
sectPr.Mark(ind);//标记段落
|
||||||
|
|
@ -14927,6 +15000,11 @@ Type TDocxStyle = Class(TDocxStyleImpl)
|
||||||
class(TSXml).UpdateNode(pPr_.Root(), arr['attributes'], arr['children']);
|
class(TSXml).UpdateNode(pPr_.Root(), arr['attributes'], arr['children']);
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
arr := self.Marshal();
|
||||||
|
if length(arr['attributes']) or length(arr['children']) then Begin
|
||||||
|
class(TSXml).UpdateNode(node_, arr['attributes'], arr['children']);
|
||||||
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
node_;
|
node_;
|
||||||
|
|
|
||||||
|
|
@ -61,5 +61,9 @@ Type TTemplateObj = class
|
||||||
map_["wstyle/heading9char.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJjaGFyYWN0ZXIiIHc6Y3VzdG9tU3R5bGU9IjEiIHc6c3R5bGVJZD0iSGVhZGluZzlDaGFyIj4NCgk8dzpuYW1lIHc6dmFsPSJIZWFkaW5nIDkgQ2hhciIgLz4NCgk8dzpiYXNlZE9uIHc6dmFsPSJEZWZhdWx0UGFyYWdyYXBoRm9udCIgLz4NCgk8dzpsaW5rIHc6dmFsPSJIZWFkaW5nOSIgLz4NCgk8dzp1aVByaW9yaXR5IHc6dmFsPSI5IiAvPg0KCTx3OnNlbWlIaWRkZW4gLz4NCgk8dzpyc2lkIHc6dmFsPSIwMEZDNjkzRiIgLz4NCgk8dzpyUHI+DQoJCTx3OnJGb250cyB3OmFzY2lpVGhlbWU9Im1ham9ySEFuc2kiIHc6ZWFzdEFzaWFUaGVtZT0ibWFqb3JFYXN0QXNpYSIgdzpoQW5zaVRoZW1lPSJtYWpvckhBbnNpIiB3OmNzdGhlbWU9Im1ham9yQmlkaSIgLz4NCgkJPHc6aSAvPg0KCQk8dzppQ3MgLz4NCgkJPHc6Y29sb3Igdzp2YWw9IjQwNDA0MCIgdzp0aGVtZUNvbG9yPSJ0ZXh0MSIgdzp0aGVtZVRpbnQ9IkJGIiAvPg0KCQk8dzpzeiB3OnZhbD0iMjAiIC8+DQoJCTx3OnN6Q3Mgdzp2YWw9IjIwIiAvPg0KCTwvdzpyUHI+DQo8L3c6c3R5bGU+DQo=","binary":nil);
|
map_["wstyle/heading9char.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJjaGFyYWN0ZXIiIHc6Y3VzdG9tU3R5bGU9IjEiIHc6c3R5bGVJZD0iSGVhZGluZzlDaGFyIj4NCgk8dzpuYW1lIHc6dmFsPSJIZWFkaW5nIDkgQ2hhciIgLz4NCgk8dzpiYXNlZE9uIHc6dmFsPSJEZWZhdWx0UGFyYWdyYXBoRm9udCIgLz4NCgk8dzpsaW5rIHc6dmFsPSJIZWFkaW5nOSIgLz4NCgk8dzp1aVByaW9yaXR5IHc6dmFsPSI5IiAvPg0KCTx3OnNlbWlIaWRkZW4gLz4NCgk8dzpyc2lkIHc6dmFsPSIwMEZDNjkzRiIgLz4NCgk8dzpyUHI+DQoJCTx3OnJGb250cyB3OmFzY2lpVGhlbWU9Im1ham9ySEFuc2kiIHc6ZWFzdEFzaWFUaGVtZT0ibWFqb3JFYXN0QXNpYSIgdzpoQW5zaVRoZW1lPSJtYWpvckhBbnNpIiB3OmNzdGhlbWU9Im1ham9yQmlkaSIgLz4NCgkJPHc6aSAvPg0KCQk8dzppQ3MgLz4NCgkJPHc6Y29sb3Igdzp2YWw9IjQwNDA0MCIgdzp0aGVtZUNvbG9yPSJ0ZXh0MSIgdzp0aGVtZVRpbnQ9IkJGIiAvPg0KCQk8dzpzeiB3OnZhbD0iMjAiIC8+DQoJCTx3OnN6Q3Mgdzp2YWw9IjIwIiAvPg0KCTwvdzpyUHI+DQo8L3c6c3R5bGU+DQo=","binary":nil);
|
||||||
map_["wstyle/title.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJwYXJhZ3JhcGgiIHc6c3R5bGVJZD0iVGl0bGUiPg0KCTx3Om5hbWUgdzp2YWw9IlRpdGxlIiAvPg0KCTx3OmJhc2VkT24gdzp2YWw9Ik5vcm1hbCIgLz4NCgk8dzpuZXh0IHc6dmFsPSJOb3JtYWwiIC8+DQoJPHc6bGluayB3OnZhbD0iVGl0bGVDaGFyIiAvPg0KCTx3OnVpUHJpb3JpdHkgdzp2YWw9IjEwIiAvPg0KCTx3OnFGb3JtYXQgLz4NCgk8dzpyc2lkIHc6dmFsPSIwMEZDNjkzRiIgLz4NCgk8dzpwUHI+DQoJCTx3OnBCZHI+DQoJCQk8dzpib3R0b20gdzp2YWw9InNpbmdsZSIgdzpzej0iOCIgdzpzcGFjZT0iNCIgdzpjb2xvcj0iNEY4MUJEIiB3OnRoZW1lQ29sb3I9ImFjY2VudDEiIC8+DQoJCTwvdzpwQmRyPg0KCQk8dzpzcGFjaW5nIHc6YWZ0ZXI9IjMwMCIgdzpsaW5lPSIyNDAiIHc6bGluZVJ1bGU9ImF1dG8iIC8+DQoJCTx3OmNvbnRleHR1YWxTcGFjaW5nIC8+DQoJPC93OnBQcj4NCgk8dzpyUHI+DQoJCTx3OnJGb250cyB3OmFzY2lpVGhlbWU9Im1ham9ySEFuc2kiIHc6ZWFzdEFzaWFUaGVtZT0ibWFqb3JFYXN0QXNpYSIgdzpoQW5zaVRoZW1lPSJtYWpvckhBbnNpIiB3OmNzdGhlbWU9Im1ham9yQmlkaSIgLz4NCgkJPHc6Y29sb3Igdzp2YWw9IjE3MzY1RCIgdzp0aGVtZUNvbG9yPSJ0ZXh0MiIgdzp0aGVtZVNoYWRlPSJCRiIgLz4NCgkJPHc6c3BhY2luZyB3OnZhbD0iNSIgLz4NCgkJPHc6a2VybiB3OnZhbD0iMjgiIC8+DQoJCTx3OnN6IHc6dmFsPSI1MiIgLz4NCgkJPHc6c3pDcyB3OnZhbD0iNTIiIC8+DQoJPC93OnJQcj4NCjwvdzpzdHlsZT4NCg==","binary":nil);
|
map_["wstyle/title.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJwYXJhZ3JhcGgiIHc6c3R5bGVJZD0iVGl0bGUiPg0KCTx3Om5hbWUgdzp2YWw9IlRpdGxlIiAvPg0KCTx3OmJhc2VkT24gdzp2YWw9Ik5vcm1hbCIgLz4NCgk8dzpuZXh0IHc6dmFsPSJOb3JtYWwiIC8+DQoJPHc6bGluayB3OnZhbD0iVGl0bGVDaGFyIiAvPg0KCTx3OnVpUHJpb3JpdHkgdzp2YWw9IjEwIiAvPg0KCTx3OnFGb3JtYXQgLz4NCgk8dzpyc2lkIHc6dmFsPSIwMEZDNjkzRiIgLz4NCgk8dzpwUHI+DQoJCTx3OnBCZHI+DQoJCQk8dzpib3R0b20gdzp2YWw9InNpbmdsZSIgdzpzej0iOCIgdzpzcGFjZT0iNCIgdzpjb2xvcj0iNEY4MUJEIiB3OnRoZW1lQ29sb3I9ImFjY2VudDEiIC8+DQoJCTwvdzpwQmRyPg0KCQk8dzpzcGFjaW5nIHc6YWZ0ZXI9IjMwMCIgdzpsaW5lPSIyNDAiIHc6bGluZVJ1bGU9ImF1dG8iIC8+DQoJCTx3OmNvbnRleHR1YWxTcGFjaW5nIC8+DQoJPC93OnBQcj4NCgk8dzpyUHI+DQoJCTx3OnJGb250cyB3OmFzY2lpVGhlbWU9Im1ham9ySEFuc2kiIHc6ZWFzdEFzaWFUaGVtZT0ibWFqb3JFYXN0QXNpYSIgdzpoQW5zaVRoZW1lPSJtYWpvckhBbnNpIiB3OmNzdGhlbWU9Im1ham9yQmlkaSIgLz4NCgkJPHc6Y29sb3Igdzp2YWw9IjE3MzY1RCIgdzp0aGVtZUNvbG9yPSJ0ZXh0MiIgdzp0aGVtZVNoYWRlPSJCRiIgLz4NCgkJPHc6c3BhY2luZyB3OnZhbD0iNSIgLz4NCgkJPHc6a2VybiB3OnZhbD0iMjgiIC8+DQoJCTx3OnN6IHc6dmFsPSI1MiIgLz4NCgkJPHc6c3pDcyB3OnZhbD0iNTIiIC8+DQoJPC93OnJQcj4NCjwvdzpzdHlsZT4NCg==","binary":nil);
|
||||||
map_["wstyle/titlechar.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJjaGFyYWN0ZXIiIHc6Y3VzdG9tU3R5bGU9IjEiIHc6c3R5bGVJZD0iVGl0bGVDaGFyIj4NCgk8dzpuYW1lIHc6dmFsPSJUaXRsZSBDaGFyIiAvPg0KCTx3OmJhc2VkT24gdzp2YWw9IkRlZmF1bHRQYXJhZ3JhcGhGb250IiAvPg0KCTx3Omxpbmsgdzp2YWw9IlRpdGxlIiAvPg0KCTx3OnVpUHJpb3JpdHkgdzp2YWw9IjEwIiAvPg0KCTx3OnJzaWQgdzp2YWw9IjAwRkM2OTNGIiAvPg0KCTx3OnJQcj4NCgkJPHc6ckZvbnRzIHc6YXNjaWlUaGVtZT0ibWFqb3JIQW5zaSIgdzplYXN0QXNpYVRoZW1lPSJtYWpvckVhc3RBc2lhIiB3OmhBbnNpVGhlbWU9Im1ham9ySEFuc2kiIHc6Y3N0aGVtZT0ibWFqb3JCaWRpIiAvPg0KCQk8dzpjb2xvciB3OnZhbD0iMTczNjVEIiB3OnRoZW1lQ29sb3I9InRleHQyIiB3OnRoZW1lU2hhZGU9IkJGIiAvPg0KCQk8dzpzcGFjaW5nIHc6dmFsPSI1IiAvPg0KCQk8dzprZXJuIHc6dmFsPSIyOCIgLz4NCgkJPHc6c3ogdzp2YWw9IjUyIiAvPg0KCQk8dzpzekNzIHc6dmFsPSI1MiIgLz4NCgk8L3c6clByPg0KPC93OnN0eWxlPg0K","binary":nil);
|
map_["wstyle/titlechar.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJjaGFyYWN0ZXIiIHc6Y3VzdG9tU3R5bGU9IjEiIHc6c3R5bGVJZD0iVGl0bGVDaGFyIj4NCgk8dzpuYW1lIHc6dmFsPSJUaXRsZSBDaGFyIiAvPg0KCTx3OmJhc2VkT24gdzp2YWw9IkRlZmF1bHRQYXJhZ3JhcGhGb250IiAvPg0KCTx3Omxpbmsgdzp2YWw9IlRpdGxlIiAvPg0KCTx3OnVpUHJpb3JpdHkgdzp2YWw9IjEwIiAvPg0KCTx3OnJzaWQgdzp2YWw9IjAwRkM2OTNGIiAvPg0KCTx3OnJQcj4NCgkJPHc6ckZvbnRzIHc6YXNjaWlUaGVtZT0ibWFqb3JIQW5zaSIgdzplYXN0QXNpYVRoZW1lPSJtYWpvckVhc3RBc2lhIiB3OmhBbnNpVGhlbWU9Im1ham9ySEFuc2kiIHc6Y3N0aGVtZT0ibWFqb3JCaWRpIiAvPg0KCQk8dzpjb2xvciB3OnZhbD0iMTczNjVEIiB3OnRoZW1lQ29sb3I9InRleHQyIiB3OnRoZW1lU2hhZGU9IkJGIiAvPg0KCQk8dzpzcGFjaW5nIHc6dmFsPSI1IiAvPg0KCQk8dzprZXJuIHc6dmFsPSIyOCIgLz4NCgkJPHc6c3ogdzp2YWw9IjUyIiAvPg0KCQk8dzpzekNzIHc6dmFsPSI1MiIgLz4NCgk8L3c6clByPg0KPC93OnN0eWxlPg0K","binary":nil);
|
||||||
|
map_["wstyle/toc.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJwYXJhZ3JhcGgiIHc6c3R5bGVJZD0iVE9DIj4NCiAgICA8dzpuYW1lIHc6dmFsPSJUT0MgSGVhZGluZyIgLz4NCiAgICA8dzpiYXNlZE9uIHc6dmFsPSIxIiAvPg0KICAgIDx3Om5leHQgdzp2YWw9ImEiIC8+DQogICAgPHc6dWlQcmlvcml0eSB3OnZhbD0iMzkiIC8+DQogICAgPHc6dW5oaWRlV2hlblVzZWQgLz4NCiAgICA8dzpxRm9ybWF0IC8+DQogICAgPHc6cnNpZCB3OnZhbD0iMDA4OTZGN0QiIC8+DQogICAgPHc6cFByPg0KICAgICAgICA8dzpzcGFjaW5nIHc6YmVmb3JlPSIyNDAiIHc6bGluZT0iMjU5IiB3OmxpbmVSdWxlPSJhdXRvIiAvPg0KICAgICAgICA8dzpvdXRsaW5lTHZsIHc6dmFsPSI5IiAvPg0KICAgIDwvdzpwUHI+DQogICAgPHc6clByPg0KICAgICAgICA8dzpiIHc6dmFsPSIwIiAvPg0KICAgICAgICA8dzpiQ3Mgdzp2YWw9IjAiIC8+DQogICAgICAgIDx3OnN6IHc6dmFsPSIzMiIgLz4NCiAgICAgICAgPHc6c3pDcyB3OnZhbD0iMzIiIC8+DQogICAgPC93OnJQcj4NCjwvdzpzdHlsZT4=","binary":nil);
|
||||||
|
map_["wstyle/toc1.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJwYXJhZ3JhcGgiIHc6c3R5bGVJZD0iVE9DMSI+DQoJPHc6bmFtZSB3OnZhbD0idG9jIDEiIC8+DQoJPHc6YmFzZWRPbiB3OnZhbD0iYSIgLz4NCgk8dzpuZXh0IHc6dmFsPSJhIiAvPg0KCTx3OmF1dG9SZWRlZmluZSAvPg0KCTx3OnVpUHJpb3JpdHkgdzp2YWw9IjM5IiAvPg0KCTx3OnVuaGlkZVdoZW5Vc2VkIC8+DQoJPHc6cnNpZCB3OnZhbD0iMDA4RDQ3NkQiIC8+DQogICAgPHc6cFByIC8+DQogICAgPHc6clByIC8+DQo8L3c6c3R5bGU+DQo=","binary":nil);
|
||||||
|
map_["wstyle/toc2.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJwYXJhZ3JhcGgiIHc6c3R5bGVJZD0iVE9DMiI+DQoJPHc6bmFtZSB3OnZhbD0idG9jIDIiIC8+DQoJPHc6YmFzZWRPbiB3OnZhbD0iYSIgLz4NCgk8dzpuZXh0IHc6dmFsPSJhIiAvPg0KCTx3OmF1dG9SZWRlZmluZSAvPg0KCTx3OnVpUHJpb3JpdHkgdzp2YWw9IjM5IiAvPg0KCTx3OnVuaGlkZVdoZW5Vc2VkIC8+DQoJPHc6cnNpZCB3OnZhbD0iMDA4RDQ3NkQiIC8+DQoJPHc6cFByPg0KCQk8dzppbmQgdzpsZWZ0Q2hhcnM9IjIwMCIgdzpsZWZ0PSI0MjAiIC8+DQoJPC93OnBQcj4NCiAgICA8dzpyUHIgLz4NCjwvdzpzdHlsZT4NCg==","binary":nil);
|
||||||
|
map_["wstyle/toc3.xml"] := array("base64":"PHc6c3R5bGUgdzp0eXBlPSJwYXJhZ3JhcGgiIHc6c3R5bGVJZD0iVE9DMyI+DQoJPHc6bmFtZSB3OnZhbD0idG9jIDMiIC8+DQoJPHc6YmFzZWRPbiB3OnZhbD0iYSIgLz4NCgk8dzpuZXh0IHc6dmFsPSJhIiAvPg0KCTx3OmF1dG9SZWRlZmluZSAvPg0KCTx3OnVpUHJpb3JpdHkgdzp2YWw9IjM5IiAvPg0KCTx3OnVuaGlkZVdoZW5Vc2VkIC8+DQoJPHc6cnNpZCB3OnZhbD0iMDA4RDQ3NkQiIC8+DQoJPHc6cFByPg0KCQk8dzppbmQgdzpsZWZ0Q2hhcnM9IjQwMCIgdzpsZWZ0PSI4NDAiIC8+DQoJPC93OnBQcj4NCiAgICA8dzpyUHIgLz4NCjwvdzpzdHlsZT4NCg==","binary":nil);
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Version 1.3.9
|
// Version 1.4.0
|
||||||
|
|
||||||
Type TSDocxFile = Class
|
Type TSDocxFile = Class
|
||||||
///Version: V1.0 2022-09-20
|
///Version: V1.0 2022-09-20
|
||||||
|
|
@ -482,7 +482,7 @@ Type TSDocxFile = Class
|
||||||
content.node_ := document_.Body().node_.InsertAfterChild(node, content.Marshal());
|
content.node_ := document_.Body().node_.InsertAfterChild(node, content.Marshal());
|
||||||
else
|
else
|
||||||
content.node_ := document_.Body().node_.InsertFirstChild(content.Marshal());
|
content.node_ := document_.Body().node_.InsertFirstChild(content.Marshal());
|
||||||
AddPageBreak(content.node_);
|
//AddPageBreak(content.node_);
|
||||||
return content;
|
return content;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Version 1.3.9
|
// Version 1.4.0
|
||||||
|
|
||||||
Type TSExcelFile = Class
|
Type TSExcelFile = Class
|
||||||
///Version: V1.0 2022-08-08
|
///Version: V1.0 2022-08-08
|
||||||
|
|
|
||||||
|
|
@ -408,6 +408,7 @@ Type TSXml = Class
|
||||||
|
|
||||||
class Function SafeStrToIntDef(s, defaultV);
|
class Function SafeStrToIntDef(s, defaultV);
|
||||||
Begin
|
Begin
|
||||||
|
if ifnumber(s) then return integer(s);
|
||||||
if not ifstring(s) then
|
if not ifstring(s) then
|
||||||
return defaultV;
|
return defaultV;
|
||||||
return StrToIntDef(s, defaultV);
|
return StrToIntDef(s, defaultV);
|
||||||
|
|
|
||||||
|
|
@ -18,32 +18,36 @@ Type TTableContent = class
|
||||||
|
|
||||||
Function SetDefaultFormat();
|
Function SetDefaultFormat();
|
||||||
Begin
|
Begin
|
||||||
defultFont := impl_.stdPr.rPr;
|
defultFont := impl_.sdtPr.rPr;
|
||||||
defultFont.rFont.cstheme := 'minorBidi';
|
defultFont.rFont.cstheme := 'minorBidi';
|
||||||
defultFont.rFont.XMLeastAsia := '宋体';
|
defultFont.rFont.XMLeastAsia := '宋体';
|
||||||
defultFont.rFont.XMLhAnsi := '宋体';
|
defultFont.rFont.XMLhAnsi := '宋体';
|
||||||
defultFont.rFont.XMLascii := '宋体';
|
defultFont.rFont.XMLascii := '宋体';
|
||||||
//defultFont.kern := 2;
|
//defultFont.kern := 2;
|
||||||
defultFont.Size := 21;
|
defultFont.Size := 21/2;
|
||||||
defultFont.SzCs := 24;
|
defultFont.SzCs := 24;
|
||||||
defultFont.Lang := 'en-US';
|
defultFont.Lang := 'en-US';
|
||||||
defultFont.bidi := 'ar-SA';
|
defultFont.bidi := 'ar-SA';
|
||||||
defultFont.eastAsia := 'zh-CN';
|
defultFont.eastAsia := 'zh-CN';
|
||||||
defultFont.Color := 'DBDBDB';
|
defultFont.Color := 'DBDBDB';
|
||||||
defultFormat := impl_.stdPr;
|
defultFormat := impl_.sdtPr;
|
||||||
defultFormat.ID := integer(time()*24*3600);
|
defultFormat.ID := integer(time()*24*3600);
|
||||||
//defultFormat.Color := 'DBDBDB';
|
//defultFormat.Color := 'DBDBDB';
|
||||||
defultFormat.docPartObj.docPartGallery := 'Table of Contents';
|
defultFormat.docPartObj.docPartGallery := 'Table of Contents';
|
||||||
defultFormat.docPartObj.docPartUnique := 1;
|
defultFormat.docPartObj.docPartUnique := 1;
|
||||||
//impl_.stdEndPr.rPr.Size := 20;
|
//impl_.sdtEndPr.rPr.Size := 21;
|
||||||
//impl_.stdEndPr.rPr.SzCs := 20;
|
//impl_.sdtEndPr.rPr.SzCs := 22;
|
||||||
impl_.stdEndPr.rPr.Bold := true;
|
impl_.sdtEndPr.rPr.Bold := true;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
///应用目录样式
|
///应用目录样式
|
||||||
Function Apply(); override;
|
Function Apply(); override;
|
||||||
Begin
|
Begin
|
||||||
arr := impl_.Marshal();
|
// sdtContent 不应该updateNode
|
||||||
|
tmp_impl := TOfficeObj('TTableContentImpl');
|
||||||
|
tmp_impl.sdtPr := impl_.sdtPr;
|
||||||
|
tmp_impl.sdtEndPr := impl_.sdtEndPr;
|
||||||
|
arr := tmp_impl.Marshal();
|
||||||
class(TSXml).UpdateNode(node_, arr['attributes'], arr['children']);
|
class(TSXml).UpdateNode(node_, arr['attributes'], arr['children']);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
@ -68,10 +72,12 @@ Type TTableContent = class
|
||||||
mParagraph.pPr.RightIndent := 0;
|
mParagraph.pPr.RightIndent := 0;
|
||||||
mParagraph.pPr.LeftChars := 0;
|
mParagraph.pPr.LeftChars := 0;
|
||||||
mParagraph.pPr.LeftIndent := 0;
|
mParagraph.pPr.LeftIndent := 0;
|
||||||
|
mParagraph.pPr.StyleID := _GetStyle('TOC');
|
||||||
mParagraph.Run.T := '目录';
|
mParagraph.Run.T := '目录';
|
||||||
mParagraph.Run.rPr.SetName('宋体', true);
|
mParagraph.Run.rPr.Lang := 'zh-CN';
|
||||||
mParagraph.Run.rPr.Size := 21;
|
//mParagraph.Run.rPr.SetName('宋体', true);
|
||||||
mParagraph.Run.rPr.Bold := true;
|
//mParagraph.Run.rPr.Size := 21/2;
|
||||||
|
//mParagraph.Run.rPr.Bold := true;
|
||||||
_AddStdContent(mParagraph);
|
_AddStdContent(mParagraph);
|
||||||
|
|
||||||
goback := TOfficeObj('TParagraph');
|
goback := TOfficeObj('TParagraph');
|
||||||
|
|
@ -79,13 +85,13 @@ Type TTableContent = class
|
||||||
goback.MarkStart.Name := '_GoBack';
|
goback.MarkStart.Name := '_GoBack';
|
||||||
goback.MarkStart.ID := id;
|
goback.MarkStart.ID := id;
|
||||||
goback.MarkEnd.ID := id;
|
goback.MarkEnd.ID := id;
|
||||||
_AddStdContent(goback);
|
//_AddStdContent(goback);
|
||||||
|
|
||||||
//缺省目录,需要word或wps打开后,更新目录
|
//缺省目录,需要word或wps打开后,更新目录
|
||||||
_AddDefaultTableContent(UpperHeadingLevel, LowerHeadingLevel);
|
//_AddDefaultTableContent(UpperHeadingLevel, LowerHeadingLevel);
|
||||||
|
|
||||||
//自定义页码计算与word、wps有差异,不推荐使用
|
//自定义页码计算与word、wps有差异,不推荐使用
|
||||||
//_AddTableContent(posOpt, UpperHeadingLevel, LowerHeadingLevel);
|
_AddTableContent(posOpt, UpperHeadingLevel, LowerHeadingLevel);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function _AddDefaultTableContent(UpperHeadingLevel, LowerHeadingLevel);
|
Function _AddDefaultTableContent(UpperHeadingLevel, LowerHeadingLevel);
|
||||||
|
|
@ -123,7 +129,7 @@ Type TTableContent = class
|
||||||
//instrText
|
//instrText
|
||||||
r2 := p.AddRun();
|
r2 := p.AddRun();
|
||||||
r2.instrTextSpace := 'preserve';
|
r2.instrTextSpace := 'preserve';
|
||||||
r2.instrText := 'TOC \\o \"' $ UpperHeadingLevel $ '-' $ LowerHeadingLevel $ '\" \\h \\u ';
|
r2.instrText := 'TOC \\o \"' $ UpperHeadingLevel $ '-' $ LowerHeadingLevel $ '\" \\h \\z \\u ';
|
||||||
|
|
||||||
//fldCharType
|
//fldCharType
|
||||||
r3 := p.AddRun();
|
r3 := p.AddRun();
|
||||||
|
|
@ -140,75 +146,73 @@ Type TTableContent = class
|
||||||
for i:=0 to length(r)-1 do Begin
|
for i:=0 to length(r)-1 do Begin
|
||||||
p := _AddItem(UpperHeadingLevel, LowerHeadingLevel, r[i]['Level'], i = 0 ? true: false);
|
p := _AddItem(UpperHeadingLevel, LowerHeadingLevel, r[i]['Level'], i = 0 ? true: false);
|
||||||
//fldCharType
|
//fldCharType
|
||||||
r4 := p.AddRun();
|
h := p.AddHyperLink();
|
||||||
r4.fldCharType := 'begin';
|
|
||||||
|
|
||||||
//instrText
|
|
||||||
bookmarke := _GetBookMarkId(r[i]['Paragraph']);
|
bookmarke := _GetBookMarkId(r[i]['Paragraph']);
|
||||||
r5 := p.AddRun();
|
h.Anchor := bookmarke;
|
||||||
r5.instrTextSpace := 'preserve';
|
h.history := 1;
|
||||||
r5.instrText := ' HYPERLINK \\l ' $ bookmarke $ ' ';
|
|
||||||
|
r1 := h.AddRun();
|
||||||
//fldCharType
|
r1.rPr.StyleId := _GetStyle(level);
|
||||||
r6 := p.AddRun();
|
r1.rPr.noProof := true;
|
||||||
r6.fldCharType := 'separate';
|
|
||||||
|
|
||||||
//目录条目文字内容
|
|
||||||
r7 := p.AddRun();
|
|
||||||
r7.Font.SetName('宋体', true);
|
|
||||||
numStr := ''; //数字项目编号
|
numStr := ''; //数字项目编号
|
||||||
if r[i]['numId'] then Begin
|
if r[i]['numId'] then Begin
|
||||||
style := docx_.NumberingObject().NumberStyle(r[i]['numId']);//支持数字、字符串StyleId
|
style := docx_.NumberingObject().NumberStyle(r[i]['numId']);//支持数字、字符串StyleId
|
||||||
if ifObj(style) then
|
if ifObj(style) then
|
||||||
numStr := style.GetText(r[i]['ilvl'], r[i]['numArr']);
|
numStr := style.GetText(r[i]['ilvl'], r[i]['numArr']);
|
||||||
End
|
End
|
||||||
r7.T := numStr + r[i]['Text'];
|
if numStr <> '' then r1.T := numStr + ' ' + r[i]['Text'];
|
||||||
|
else r1.T := r[i]['Text'];
|
||||||
//Tab
|
|
||||||
r8 := p.AddRun();
|
r2 := h.AddRun();
|
||||||
r8.Tab := true;
|
r2.rPr.noProof := true;
|
||||||
|
r2.rPr.WebHidden := true;
|
||||||
//fldCharType
|
r2.Tab := true;
|
||||||
r9 := p.AddRun();
|
|
||||||
r9.fldCharType := 'begin';
|
r3 := h.AddRun();
|
||||||
|
r3.rPr.noProof := true;
|
||||||
|
r3.rPr.WebHidden := true;
|
||||||
|
r3.fldCharType := 'begin';
|
||||||
|
|
||||||
//instrText
|
//instrText
|
||||||
r10 := p.AddRun();
|
r4 := h.AddRun();
|
||||||
r10.instrTextSpace := 'preserve';
|
r4.rPr.noProof := true;
|
||||||
r10.instrText := ' PAGEREF ' $ bookmarke $ ' \\h ';
|
r4.rPr.WebHidden := true;
|
||||||
|
r4.instrTextSpace := 'preserve';
|
||||||
|
r4.instrText := ' PAGEREF ' $ bookmarke $ ' \\h ';
|
||||||
|
|
||||||
|
r5 := h.AddRun();
|
||||||
|
r5.rPr.noProof := true;
|
||||||
|
r5.rPr.WebHidden := true;
|
||||||
|
r5.Tab := true;
|
||||||
|
|
||||||
//fldCharType
|
//fldCharType
|
||||||
r11 := p.AddRun();
|
r6 := h.AddRun();
|
||||||
r11.fldCharType := 'separate';
|
r6.rPr.noProof := true;
|
||||||
|
r6.rPr.WebHidden := true;
|
||||||
|
r6.fldCharType := 'separate';
|
||||||
|
|
||||||
//页码
|
//页码
|
||||||
r12 := p.AddRun();
|
r7 := h.AddRun();
|
||||||
r12.T := '' $ r[i]['pageNo'];
|
r7.T := 0;//'' $ r[i]['pageNo'];
|
||||||
|
|
||||||
//fldCharType
|
//fldCharType
|
||||||
r13 := p.AddRun();
|
r8 := h.AddRun();
|
||||||
r13.fldCharType := 'end';
|
r8.rPr.noProof := true;
|
||||||
|
r8.rPr.WebHidden := true;
|
||||||
//fldCharType
|
r8.fldCharType := 'end';
|
||||||
r14 := p.AddRun();
|
|
||||||
r14.fldCharType := 'end';
|
|
||||||
|
|
||||||
if r[i]['Level']+1 = UpperHeadingLevel then Begin //第一级标题,设置为粗体
|
|
||||||
p.Format.rPr.Bold := true;
|
|
||||||
r4.rPr.Bold := true;
|
|
||||||
r5.rPr.Bold := true;
|
|
||||||
r6.rPr.Bold := true;
|
|
||||||
r7.rPr.Bold := true;
|
|
||||||
r8.rPr.Bold := true;
|
|
||||||
//r9.rPr.Bold := true;
|
|
||||||
r10.rPr.Bold := true;
|
|
||||||
//r11.rPr.Bold := true;
|
|
||||||
r12.Font.Bold := true;
|
|
||||||
//r13.rPr.Bold := true;
|
|
||||||
r14.rPr.Bold := true;
|
|
||||||
End;
|
|
||||||
_AddStdContent(p);
|
_AddStdContent(p);
|
||||||
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
p2 := TOfficeObj('TParagraph');
|
||||||
|
//p2.Format.SpaceAfter := 0;
|
||||||
|
run := p2.AddRun();
|
||||||
|
run.rPr.Bold := true;
|
||||||
|
run.rPr.noProof := true;
|
||||||
|
run.fldCharType := 'end';
|
||||||
|
_AddStdContent(p2);
|
||||||
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
///更新目录
|
///更新目录
|
||||||
|
|
@ -224,21 +228,21 @@ Type TTableContent = class
|
||||||
Property Format read readFormat;
|
Property Format read readFormat;
|
||||||
Function readFormat();
|
Function readFormat();
|
||||||
Begin
|
Begin
|
||||||
return impl_.stdPr;
|
return impl_.sdtPr;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Property EndFormat read readEndFormat;
|
Property EndFormat read readEndFormat;
|
||||||
Function readEndFormat();
|
Function readEndFormat();
|
||||||
Begin
|
Begin
|
||||||
return impl_.stdEndPr;
|
return impl_.sdtEndPr;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Property Font read readFont;
|
Property Font read readFont;
|
||||||
Function readFont();
|
Function readFont();
|
||||||
Begin
|
Begin
|
||||||
return impl_.stdPr.rPr;
|
return impl_.sdtPr.rPr;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function _AddStdContent(o);
|
Function _AddStdContent(o);
|
||||||
Begin
|
Begin
|
||||||
impl_.SdtContent.NewChildNode( array("field":"", "name":"w:p", "obj":o, "attrEx":"", "nodeType":"") );
|
impl_.SdtContent.NewChildNode( array("field":"", "name":"w:p", "obj":o, "attrEx":"", "nodeType":"") );
|
||||||
|
|
@ -246,18 +250,10 @@ Type TTableContent = class
|
||||||
|
|
||||||
Function _GetStyle(level);
|
Function _GetStyle(level);
|
||||||
Begin
|
Begin
|
||||||
styleName := 'Tinysoft目录 ' $ (level + 1);
|
styleName := ifstring(level) ? level : 'TOC' $ (level + 1);
|
||||||
style := docx_.StyleObject().GetStyle(styleName);
|
style := docx_.StyleObject().GetStyleById(styleName);
|
||||||
if not ifObj(style) then Begin
|
if not ifObj(style) then Begin
|
||||||
style := TOfficeObj('TDocxStyle');
|
style := docx_.StyleObject().AddDefaultStyle(styleName);
|
||||||
style.wType := 'paragraph';
|
|
||||||
style.CustomStyle := 1;
|
|
||||||
style.Name := styleName;
|
|
||||||
style.uiPriority := 0;
|
|
||||||
style.pPr.LeftChars := 200 * level;
|
|
||||||
style.rPr.Size := 20;
|
|
||||||
style.rPr.SzCs := 20;
|
|
||||||
docx_.StyleObject().AddStyle(style, 'TsToc' $ (level + 1));
|
|
||||||
End;
|
End;
|
||||||
return style.StyleId;
|
return style.StyleId;
|
||||||
End;
|
End;
|
||||||
|
|
@ -301,4 +297,4 @@ Type TTableContent = class
|
||||||
docx_;
|
docx_;
|
||||||
node_;
|
node_;
|
||||||
impl_;
|
impl_;
|
||||||
End;
|
End;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue