完善对页眉页脚的支持
This commit is contained in:
parent
4c6f4d6e09
commit
ca18537538
|
|
@ -234,7 +234,7 @@ begin
|
|||
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";
|
||||
else if not even_and_odd_flag_ then
|
||||
type_name := "default";
|
||||
|
|
@ -267,7 +267,7 @@ function TSDocxToPdf.SetFtr(type: string);
|
|||
begin
|
||||
ftr_point_.X := sect_ware_.SectPr.PgMar.Left;
|
||||
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
|
||||
begin
|
||||
rels_adapter := docx_components_ware_.GetDocumentRelsAdapter();
|
||||
|
|
@ -295,7 +295,7 @@ begin
|
|||
rel := rels_adapter.GetRelationshipById(header_reference.Id);
|
||||
w := sect_ware_.SectPr.PgSz.W - sect_ware_.SectPr.PgMar.Right - sect_ware_.SectPr.PgMar.Left;
|
||||
lb := 0;
|
||||
obj := docx_components_ware_.GetFtr(rel.Target);
|
||||
obj := docx_components_ware_.GetHdr(rel.Target);
|
||||
xml_file_ := rel.Target;
|
||||
elements := obj.Elements();
|
||||
for _,element in elements do
|
||||
|
|
|
|||
|
|
@ -85,13 +85,15 @@ begin
|
|||
begin
|
||||
empty_flag := false;
|
||||
{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;
|
||||
else if element.FldChar.FldCharType = "end" then
|
||||
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;
|
||||
else if element.InstrText.Text = " NUMPAGES " then
|
||||
else if ifString(element.InstrText.Text) and trim(element.InstrText.Text) = "NUMPAGES" then
|
||||
numpages := true;
|
||||
else if fld and page_number then
|
||||
begin
|
||||
|
|
@ -112,6 +114,16 @@ begin
|
|||
else if ifObj(element.AlternateContent.XmlNode) then {self.}RAlternateContentToRange(element);
|
||||
else if not fld then {self.}RToTextRange(element, bookmark_name);
|
||||
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
|
||||
begin
|
||||
empty_flag := false;
|
||||
|
|
|
|||
|
|
@ -79,8 +79,8 @@ end;
|
|||
function TSDocxComponentsWare.GetFtr(target: string): Ftr;
|
||||
begin
|
||||
if ftr_hash_[target] then return ftr_hash_[target];
|
||||
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
||||
obj := {self.}Headers(strtoint(index));
|
||||
index := replaceStr(replaceStr(target, "footer", ""), ".xml", "");
|
||||
obj := {self.}Footers(strtoint(index));
|
||||
obj.Deserialize();
|
||||
ftr_hash_[target] := obj;
|
||||
return obj;
|
||||
|
|
@ -90,7 +90,7 @@ function TSDocxComponentsWare.GetHdr(target: string): Hdr;
|
|||
begin
|
||||
if hdr_hash_[target] then return hdr_hash_[target];
|
||||
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
||||
obj := {self.}Footers(strtoint(index));
|
||||
obj := {self.}Headers(strtoint(index));
|
||||
obj.Deserialize();
|
||||
hdr_hash_[target] := obj;
|
||||
return obj;
|
||||
|
|
|
|||
Loading…
Reference in New Issue