适配officexml20250925
This commit is contained in:
parent
7da30f77ab
commit
7a46ccf838
|
|
@ -1,5 +1,5 @@
|
|||
type TSDocxToPdf = class
|
||||
uses TSPdfEnumerations, DocxML, DocxMLAdapter, DTPModules, DTPUtils, DTPAdvancedRanges;
|
||||
uses TSPdfEnumerations, DocxMLAdapters, DTPModules, DTPAdvancedRanges;
|
||||
public
|
||||
function Create(alias: string; file: string);
|
||||
function Destroy();
|
||||
|
|
@ -48,7 +48,7 @@ private
|
|||
font_module_: FontModule; // 字体模块
|
||||
sect_module_array_: array of SectModule; // 页面布局模块数组
|
||||
current_sect_module_: SectModule;
|
||||
current_sect_pr_adapter_: SectPrAdapter;
|
||||
current_sect_pr_adapter_: SectPr; // DocxMLAdapters.SectPr
|
||||
|
||||
page_manager_module_: PageManagerModule;
|
||||
current_page_: Page;
|
||||
|
|
@ -113,7 +113,7 @@ begin
|
|||
if current_sect_module_ <> sect_module then
|
||||
begin
|
||||
current_sect_module_ := sect_module;
|
||||
current_sect_pr_adapter_ := new SectPrAdapter(current_sect_module_.SectPr);
|
||||
current_sect_pr_adapter_ := new DocxMLAdapters.SectPr(current_sect_module_.SectPr);
|
||||
{self.}AddPage(true);
|
||||
end
|
||||
|
||||
|
|
@ -232,7 +232,7 @@ begin
|
|||
else if not even_and_odd_flag_ then
|
||||
type_name := "default";
|
||||
else if not odd(current_page_.Index) then
|
||||
type_name := "even"
|
||||
type_name := "even";
|
||||
else
|
||||
type_name := "default";
|
||||
|
||||
|
|
@ -273,7 +273,7 @@ begin
|
|||
xml_file_ := rel.Target;
|
||||
|
||||
w := current_page_.SectPr.PgSz.W - current_page_.SectPr.PgMar.Right - current_page_.SectPr.PgMar.Left;
|
||||
ftr_range := new FtrRange(self, ftr);
|
||||
ftr_range := new DTPAdvancedRanges.FtrRange(self, ftr);
|
||||
ftr_range.Width := w;
|
||||
ftr_range.Parent := self;
|
||||
ftr_range.LowerBound := 0;
|
||||
|
|
@ -304,7 +304,7 @@ begin
|
|||
xml_file_ := rel.Target;
|
||||
|
||||
w := current_page_.SectPr.PgSz.W - current_page_.SectPr.PgMar.Right - current_page_.SectPr.PgMar.Left;
|
||||
hdr_range := new HdrRange(self, hdr);
|
||||
hdr_range := new DTPAdvancedRanges.HdrRange(self, hdr);
|
||||
hdr_range.Width := w;
|
||||
hdr_range.Parent := self;
|
||||
hdr_range.LowerBound := 0;
|
||||
|
|
@ -322,7 +322,7 @@ function TSDocxToPdf.RangesSpacing(range: BasicRange);
|
|||
begin
|
||||
if last_range_ then
|
||||
begin
|
||||
if last_range_ is class(PRange) and not ifnil(last_range_.P.PPr.OutlineLvl.Val) and (range is class(TblRange) or ifnil(range.P.PPr.OutlineLvl.Val)) then
|
||||
if last_range_ is class(DTPAdvancedRanges.PRange) and not ifnil(last_range_.P.PPr.OutlineLvl.Val) and (range is class(DTPAdvancedRanges.TblRange) or ifnil(range.P.PPr.OutlineLvl.Val)) then
|
||||
begin
|
||||
if last_range_.P.PPr.Spacing.AfterAutospacing then
|
||||
begin
|
||||
|
|
@ -332,7 +332,7 @@ begin
|
|||
if y >= 0 then current_page_.TextPoint.Y := y;
|
||||
end
|
||||
end
|
||||
if range is class(PRange) and not ifnil(range.P.PPr.OutlineLvl.Val) and (last_range_ is class(TblRange) or ifnil(last_range_.P.PPr.OutlineLvl.Val)) then
|
||||
if range is class(DTPAdvancedRanges.PRange) and not ifnil(range.P.PPr.OutlineLvl.Val) and (last_range_ is class(DTPAdvancedRanges.TblRange) or ifnil(last_range_.P.PPr.OutlineLvl.Val)) then
|
||||
begin
|
||||
if range.P.PPr.Spacing.BeforeAutospacing then
|
||||
begin
|
||||
|
|
@ -349,7 +349,7 @@ end;
|
|||
function TSDocxToPdf.TransformP(p: P);
|
||||
begin
|
||||
w := current_page_.SectPr.PgSz.W - current_page_.SectPr.PgMar.Right - current_page_.SectPr.PgMar.Left;
|
||||
range := new PRange(self, p);
|
||||
range := new DTPAdvancedRanges.PRange(self, p);
|
||||
range.Width := w;
|
||||
range.Parent := self;
|
||||
range.LowerBound := current_page_.LowerBound;
|
||||
|
|
@ -366,7 +366,7 @@ end;
|
|||
function TSDocxToPdf.TransformTbl(tbl: Tbl);
|
||||
begin
|
||||
w := current_page_.SectPr.PgSz.W - current_page_.SectPr.PgMar.Right - current_page_.SectPr.PgMar.Left;
|
||||
range := new TblRange(self, tbl);
|
||||
range := new DTPAdvancedRanges.TblRange(self, tbl);
|
||||
range.Width := w;
|
||||
range.Parent := self;
|
||||
range.LowerBound := current_page_.LowerBound;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
unit DTPAdvancedRanges;
|
||||
interface
|
||||
uses DTPPrimitiveRanges, DTPUtils, DTPModules, SharedML, DocxML, TSPdfEnumerations;
|
||||
uses DTPPrimitiveRanges, DTPUtils, DocxML, TSPdfEnumerations;
|
||||
|
||||
type AdvancedRange = class(BasicRange)
|
||||
public
|
||||
|
|
@ -172,7 +172,7 @@ public
|
|||
function SetVAlign();
|
||||
function SetTop();
|
||||
|
||||
property Tc Read tc_;
|
||||
property Tc read tc_;
|
||||
|
||||
public
|
||||
Row: integer;
|
||||
|
|
@ -1003,6 +1003,7 @@ begin
|
|||
begin
|
||||
if fld_struct.Arabic then
|
||||
begin
|
||||
rpr := r.RPr;
|
||||
if not rpr.Sz.Val then rpr.Sz.Val := rpr.SzCs.Val ? rpr.SzCs.Val : docx_to_pdf_.Font.GetDefaultSz();
|
||||
font_name := rpr.RFonts.EastAsia ? rpr.RFonts.EastAsia : rpr.RFonts.Ascii;
|
||||
font_obj := docx_to_pdf_.Font.GetCNSFont(font_name, rpr.B.IsApplied, rpr.I.IsApplied);
|
||||
|
|
@ -2046,7 +2047,7 @@ begin
|
|||
for j,tc in tcs do
|
||||
begin
|
||||
if i = 0 then {self.}SetTcTcPr(tc, "firstRow");
|
||||
else if i = length(trs)-1 then {self.}SetTcTcPr(tc, "lastRow")
|
||||
else if i = length(trs)-1 then {self.}SetTcTcPr(tc, "lastRow");
|
||||
else if (i + 1) % 2 = 0 then {self.}SetTcTcPr(tc, "band1Horz");
|
||||
else {self.}SetTcTcPr(tc, "band2Horz");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
unit DTPModules;
|
||||
interface
|
||||
uses DTPAdvancedRanges, DocxMLAdapter, SharedMLAdapter;
|
||||
uses DTPAdvancedRanges, DocxMLAdapters, SharedMLAdapters;
|
||||
|
||||
type DocxComponentsModule = class(DocxComponents)
|
||||
public
|
||||
|
|
@ -158,7 +158,7 @@ end;
|
|||
type PageManagerModule = class
|
||||
public
|
||||
function Create(pdf_file: PdfFile);
|
||||
function Operator[](index: uinteger): Page;
|
||||
function operator[](index: uinteger): Page;
|
||||
function NewPage(): Page;
|
||||
function NextPage(page: Page): Page;
|
||||
function Count(): integer;
|
||||
|
|
@ -193,7 +193,7 @@ end;
|
|||
function DocxComponentsModule.GetStylesAdapter(): StylesAdapter;
|
||||
begin
|
||||
if styles_adapter_ then return styles_adapter_;
|
||||
styles_adapter_ := new StylesAdapter({self.}GetStyles());
|
||||
styles_adapter_ := new DocxMLAdapters.Styles({self.}GetStyles());
|
||||
return styles_adapter_;
|
||||
end;
|
||||
|
||||
|
|
@ -201,7 +201,7 @@ function DocxComponentsModule.GetDocumentRelsAdapter(): RelationShipsAdapter;
|
|||
begin
|
||||
if document_rels_adapter_ then return document_rels_adapter_;
|
||||
{self.}DocumentRels.Deserialize();
|
||||
document_rels_adapter_ := new RelationShipsAdapter({self.}DocumentRels);
|
||||
document_rels_adapter_ := new SharedMLAdapters.RelationShips({self.}DocumentRels);
|
||||
return document_rels_adapter_;
|
||||
end;
|
||||
|
||||
|
|
@ -220,7 +220,7 @@ begin
|
|||
if tbl_style_pr_hash_[style_id][type] then return tbl_style_pr_hash_[style_id][type];
|
||||
styles_adapter := {self.}GetStylesAdapter();
|
||||
style := styles_adapter.GetStyleByStyleId(style_id);
|
||||
style := new StyleAdapter(style);
|
||||
style := new DocxMLAdapters.Style(style);
|
||||
tbl_style_pr := style.GetTblStylePrByType(type);
|
||||
tbl_style_pr_hash_[style_id][type] := tbl_style_pr;
|
||||
return tbl_style_pr;
|
||||
|
|
@ -254,7 +254,7 @@ begin
|
|||
index := replaceStr(replaceStr(target, "header", ""), ".xml", "");
|
||||
obj := {self.}HeaderRels(strtoint(index));
|
||||
obj.Deserialize();
|
||||
rels_adapter := new RelationShipsAdapter(obj);
|
||||
rels_adapter := new SharedMLAdapters.RelationShips(obj);
|
||||
hdr_rel_hash_[target] := rels_adapter;
|
||||
return rels_adapter;
|
||||
end;
|
||||
|
|
@ -265,7 +265,7 @@ begin
|
|||
index := replaceStr(replaceStr(target, "footer", ""), ".xml", "");
|
||||
obj := {self.}FooterRels(strtoint(index));
|
||||
obj.Deserialize();
|
||||
rels_adapter := new RelationShipsAdapter(obj);
|
||||
rels_adapter := new SharedMLAdapters.RelationShips(obj);
|
||||
ftr_rel_hash_[target] := rels_adapter;
|
||||
return rels_adapter;
|
||||
end;
|
||||
|
|
@ -276,7 +276,7 @@ begin
|
|||
obj := {self.}Footnotes;
|
||||
obj.Deserialize();
|
||||
obj.ConvertToPoint();
|
||||
footnotes_adapter_ := new FootnotesAdapter(obj);
|
||||
footnotes_adapter_ := new DocxMLAdapters.Footnotes(obj);
|
||||
return footnotes_adapter_;
|
||||
end;
|
||||
|
||||
|
|
@ -504,7 +504,7 @@ end;
|
|||
// NumberingModule
|
||||
function NumberingModule.Create(number: NumberingAdapter);
|
||||
begin
|
||||
numbering_adapter_ := new NumberingAdapter(number);
|
||||
numbering_adapter_ := new DocxMLAdapters.Numbering(number);
|
||||
num_hash_ := array();
|
||||
end;
|
||||
|
||||
|
|
@ -656,7 +656,7 @@ begin
|
|||
page_array_ := array();
|
||||
end;
|
||||
|
||||
function Operator PageManagerModule.[](index: uinteger): Page;
|
||||
function operator PageManagerModule.[](index: uinteger): Page;
|
||||
begin
|
||||
return page_array_[index];
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -128,7 +128,6 @@ begin
|
|||
{self.}EndPage.PdfPage.SetRGBFill(0, 0, 0);
|
||||
end
|
||||
|
||||
// println("image = {}, type = {}, x = {}, y = {}, w = {}, h = {}", {self.}image, {self.}Type, {self.}endx, {self.}endy, {self.}width, {self.}DynamicHeight);
|
||||
if {self.}Type = "emf" then
|
||||
{self.}EndPage.PdfPage.DrawEmf({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
else if {self.}Type = "wmf" then
|
||||
|
|
|
|||
Loading…
Reference in New Issue