diff --git a/TSDocxToPdf.tsf b/TSDocxToPdf.tsf index 5d3996c..385e9eb 100644 --- a/TSDocxToPdf.tsf +++ b/TSDocxToPdf.tsf @@ -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; diff --git a/internal/DTPAdvancedRanges.tsf b/internal/DTPAdvancedRanges.tsf index 56059cf..6d7caf2 100644 --- a/internal/DTPAdvancedRanges.tsf +++ b/internal/DTPAdvancedRanges.tsf @@ -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"); diff --git a/internal/DTPModules.tsf b/internal/DTPModules.tsf index c4e1c7d..b1d926f 100644 --- a/internal/DTPModules.tsf +++ b/internal/DTPModules.tsf @@ -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; diff --git a/internal/DTPPrimitiveRanges.tsf b/internal/DTPPrimitiveRanges.tsf index 83d5bf8..19a5bed 100644 --- a/internal/DTPPrimitiveRanges.tsf +++ b/internal/DTPPrimitiveRanges.tsf @@ -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