完善对页眉页脚的支持
This commit is contained in:
parent
4c6f4d6e09
commit
ca18537538
|
|
@ -234,7 +234,7 @@ begin
|
||||||
page_array_[len] := current_page_;
|
page_array_[len] := current_page_;
|
||||||
|
|
||||||
// 页眉页脚
|
// 页眉页脚
|
||||||
if current_page_.Index = 0 then
|
if sect_ware_.SectPr.TitlePg and current_page_.Index = 0 then
|
||||||
type_name := "first";
|
type_name := "first";
|
||||||
else if not even_and_odd_flag_ then
|
else if not even_and_odd_flag_ then
|
||||||
type_name := "default";
|
type_name := "default";
|
||||||
|
|
@ -267,7 +267,7 @@ function TSDocxToPdf.SetFtr(type: string);
|
||||||
begin
|
begin
|
||||||
ftr_point_.X := sect_ware_.SectPr.PgMar.Left;
|
ftr_point_.X := sect_ware_.SectPr.PgMar.Left;
|
||||||
ftr_point_.Y := sect_ware_.SectPr.PgMar.Bottom;
|
ftr_point_.Y := sect_ware_.SectPr.PgMar.Bottom;
|
||||||
footer_reference := sect_pr_adapter_.GetFooterReferenceByType(type_name);
|
footer_reference := sect_pr_adapter_.GetFooterReferenceByType(type);
|
||||||
if ifObj(footer_reference) then
|
if ifObj(footer_reference) then
|
||||||
begin
|
begin
|
||||||
rels_adapter := docx_components_ware_.GetDocumentRelsAdapter();
|
rels_adapter := docx_components_ware_.GetDocumentRelsAdapter();
|
||||||
|
|
@ -295,7 +295,7 @@ begin
|
||||||
rel := rels_adapter.GetRelationshipById(header_reference.Id);
|
rel := rels_adapter.GetRelationshipById(header_reference.Id);
|
||||||
w := sect_ware_.SectPr.PgSz.W - sect_ware_.SectPr.PgMar.Right - sect_ware_.SectPr.PgMar.Left;
|
w := sect_ware_.SectPr.PgSz.W - sect_ware_.SectPr.PgMar.Right - sect_ware_.SectPr.PgMar.Left;
|
||||||
lb := 0;
|
lb := 0;
|
||||||
obj := docx_components_ware_.GetFtr(rel.Target);
|
obj := docx_components_ware_.GetHdr(rel.Target);
|
||||||
xml_file_ := rel.Target;
|
xml_file_ := rel.Target;
|
||||||
elements := obj.Elements();
|
elements := obj.Elements();
|
||||||
for _,element in elements do
|
for _,element in elements do
|
||||||
|
|
|
||||||
|
|
@ -85,13 +85,15 @@ begin
|
||||||
begin
|
begin
|
||||||
empty_flag := false;
|
empty_flag := false;
|
||||||
{self.}SetRPr(element.RPr, ppr_unit_decorator_);
|
{self.}SetRPr(element.RPr, ppr_unit_decorator_);
|
||||||
if element.FldChar.FldCharType = "separate" then
|
if element.FldChar.FldCharType = "begin" then
|
||||||
|
continue;
|
||||||
|
else if element.FldChar.FldCharType = "separate" then
|
||||||
fld := true;
|
fld := true;
|
||||||
else if element.FldChar.FldCharType = "end" then
|
else if element.FldChar.FldCharType = "end" then
|
||||||
fld := false;
|
fld := false;
|
||||||
else if element.InstrText.Text = "PAGE \\* Arabic \\* MERGEFORMAT" then
|
else if ifString(element.InstrText.Text) and trim(element.InstrText.Text) = "PAGE \\* Arabic \\* MERGEFORMAT" then
|
||||||
page_number := true;
|
page_number := true;
|
||||||
else if element.InstrText.Text = " NUMPAGES " then
|
else if ifString(element.InstrText.Text) and trim(element.InstrText.Text) = "NUMPAGES" then
|
||||||
numpages := true;
|
numpages := true;
|
||||||
else if fld and page_number then
|
else if fld and page_number then
|
||||||
begin
|
begin
|
||||||
|
|
@ -112,6 +114,16 @@ begin
|
||||||
else if ifObj(element.AlternateContent.XmlNode) then {self.}RAlternateContentToRange(element);
|
else if ifObj(element.AlternateContent.XmlNode) then {self.}RAlternateContentToRange(element);
|
||||||
else if not fld then {self.}RToTextRange(element, bookmark_name);
|
else if not fld then {self.}RToTextRange(element, bookmark_name);
|
||||||
end
|
end
|
||||||
|
else if element.LocalName = "fldSimple" then
|
||||||
|
begin
|
||||||
|
if ifString(element.Instr) and trim(element.Instr) = "NUMPAGES \\* Arabic \\* MERGEFORMAT" then
|
||||||
|
begin
|
||||||
|
rpr := new RPrUnitDecorator(element.Rs(0).RPr);
|
||||||
|
numpages_index := length(range_array_);
|
||||||
|
placeholder_array_ := array(numpages_index, rpr);
|
||||||
|
numpages := false;
|
||||||
|
end
|
||||||
|
end
|
||||||
else if element.LocalName = "hyperlink" then
|
else if element.LocalName = "hyperlink" then
|
||||||
begin
|
begin
|
||||||
empty_flag := false;
|
empty_flag := false;
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,8 @@ end;
|
||||||
function TSDocxComponentsWare.GetFtr(target: string): Ftr;
|
function TSDocxComponentsWare.GetFtr(target: string): Ftr;
|
||||||
begin
|
begin
|
||||||
if ftr_hash_[target] then return ftr_hash_[target];
|
if ftr_hash_[target] then return ftr_hash_[target];
|
||||||
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
index := replaceStr(replaceStr(target, "footer", ""), ".xml", "");
|
||||||
obj := {self.}Headers(strtoint(index));
|
obj := {self.}Footers(strtoint(index));
|
||||||
obj.Deserialize();
|
obj.Deserialize();
|
||||||
ftr_hash_[target] := obj;
|
ftr_hash_[target] := obj;
|
||||||
return obj;
|
return obj;
|
||||||
|
|
@ -90,7 +90,7 @@ function TSDocxComponentsWare.GetHdr(target: string): Hdr;
|
||||||
begin
|
begin
|
||||||
if hdr_hash_[target] then return hdr_hash_[target];
|
if hdr_hash_[target] then return hdr_hash_[target];
|
||||||
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
||||||
obj := {self.}Footers(strtoint(index));
|
obj := {self.}Headers(strtoint(index));
|
||||||
obj.Deserialize();
|
obj.Deserialize();
|
||||||
hdr_hash_[target] := obj;
|
hdr_hash_[target] := obj;
|
||||||
return obj;
|
return obj;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue