Compare commits

...

2 Commits

Author SHA1 Message Date
csh 3b16e6969f 页码起始页为1 2024-11-25 09:55:15 +08:00
csh f251782186 表格边框优化 2024-11-25 09:54:41 +08:00
3 changed files with 39 additions and 14 deletions

View File

@ -269,7 +269,8 @@ begin
current_page_ := new TSPage(); current_page_ := new TSPage();
current_page_.Index := len; current_page_.Index := len;
current_page_.PdfPage := page; current_page_.PdfPage := page;
current_page_.Number := flag ? sect_ware_.SectPr.PgNumType.Start : page_array_[len-1].Number + 1; current_page_.Number := flag ? ifnil(sect_ware_.SectPr.PgNumType.Start) ? 1 : sect_ware_.SectPr.PgNumType.Start : page_array_[len-1].Number + 1;
// println("len = {}, Number = {}", len, current_page_.Number);
page_array_[len] := current_page_; page_array_[len] := current_page_;
// 页眉页脚 // 页眉页脚

View File

@ -268,22 +268,26 @@ begin
begin begin
if tbl_pr_.TblBorders.Top then if tbl_pr_.TblBorders.Top then
begin begin
tc_pr_unit_decorator_.TcBorders.Top.Copy(tbl_pr_.TblBorders.Top); if not tc_pr_unit_decorator_.TcBorders.Top then
tc_pr_unit_decorator_.TcBorders.Top.Copy(tbl_pr_.TblBorders.Top);
range.Top := true; range.Top := true;
end end
if tbl_pr_.TblBorders.InsideH and {self.}VMerge <> parent_.Rows()-1 then if tbl_pr_.TblBorders.InsideH and {self.}VMerge <> parent_.Rows()-1 then
begin begin
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH); if not tc_pr_unit_decorator_.TcBorders.Bottom then
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH);
range.Bottom := true; range.Bottom := true;
end end
if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then
begin begin
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); if not tc_pr_unit_decorator_.TcBorders.Right then
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV);
range.Right := true; range.Right := true;
end end
if tbl_pr_.TblBorders.Bottom and {self.}VMerge = parent_.Rows()-1 then if tbl_pr_.TblBorders.Bottom and {self.}VMerge = parent_.Rows()-1 then
begin begin
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); if not tc_pr_unit_decorator_.TcBorders.Bottom then
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom);
range.Bottom := true; range.Bottom := true;
end end
end end
@ -291,29 +295,34 @@ begin
begin begin
if tbl_pr_.TblBorders.Bottom then if tbl_pr_.TblBorders.Bottom then
begin begin
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); if not tc_pr_unit_decorator_.TcBorders.Bottom then
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom);
range.Bottom := true; range.Bottom := true;
end end
if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then
begin begin
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); if not tc_pr_unit_decorator_.TcBorders.Right then
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV);
range.Right := true; range.Right := true;
end end
end end
else begin else begin
if tbl_pr_.TblBorders.Bottom and {self.}VMerge = parent_.Rows()-1 then if tbl_pr_.TblBorders.Bottom and {self.}VMerge = parent_.Rows()-1 then
begin begin
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom); if not tc_pr_unit_decorator_.TcBorders.Bottom then
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.Bottom);
range.Bottom := true; range.Bottom := true;
end end
if tbl_pr_.TblBorders.InsideH and {self.}VMerge <> parent_.Rows()-1 then if tbl_pr_.TblBorders.InsideH and {self.}VMerge <> parent_.Rows()-1 then
begin begin
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH); if not tc_pr_unit_decorator_.TcBorders.Bottom then
tc_pr_unit_decorator_.TcBorders.Bottom.Copy(tbl_pr_.TblBorders.InsideH);
range.Bottom := true; range.Bottom := true;
end end
if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then if tbl_pr_.TblBorders.InsideV and {self.}Col <> parent_.Cols()-1 then
begin begin
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV); if not tc_pr_unit_decorator_.TcBorders.Right then
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.InsideV);
range.Right := true; range.Right := true;
end end
end end
@ -322,7 +331,8 @@ begin
begin begin
if tbl_pr_.TblBorders.Left then if tbl_pr_.TblBorders.Left then
begin begin
tc_pr_unit_decorator_.TcBorders.Left.Copy(tbl_pr_.TblBorders.Left); if not tc_pr_unit_decorator_.TcBorders.Left then
tc_pr_unit_decorator_.TcBorders.Left.Copy(tbl_pr_.TblBorders.Left);
range.Left := true; range.Left := true;
end end
end end
@ -330,7 +340,8 @@ begin
begin begin
if tbl_pr_.TblBorders.Right then if tbl_pr_.TblBorders.Right then
begin begin
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.Right); if not tc_pr_unit_decorator_.TcBorders.Right then
tc_pr_unit_decorator_.TcBorders.Right.Copy(tbl_pr_.TblBorders.Right);
range.Right := true; range.Right := true;
end end
end end

View File

@ -28,16 +28,29 @@ end;
function TSPdfBordersRange.Do();override; function TSPdfBordersRange.Do();override;
begin begin
// println("Left = {}, Top = {}, Right = {}, Bottom = {}, Tl2Br = {}, Tr2Bl = {}", Left, Top, Right, Bottom, Tl2Br, Tr2Bl); // println("Left = {}, Top = {}, Right = {}, Bottom = {}, Tl2Br = {}, Tr2Bl = {}", Left, Top, Right, Bottom, Tl2Br, Tr2Bl);
borders := {self.}TcPr.TcBorders;
if {self.}TcPr.Shd.Fill and {self.}TcPr.Shd.Fill <> "auto" then if {self.}TcPr.Shd.Fill and {self.}TcPr.Shd.Fill <> "auto" then
begin begin
[r, g, b] := TSColorToolKit.HexToRGB({self.}TcPr.Shd.Fill); [r, g, b] := TSColorToolKit.HexToRGB({self.}TcPr.Shd.Fill);
{self.}TSPage.PdfPage.SetRGBFill(r/255, g/255, b/255); {self.}TSPage.PdfPage.SetRGBFill(r/255, g/255, b/255);
{self.}TSPage.PdfPage.Rectangle({self.}EndX, {self.}EndY - {self.}DynamicHeight, {self.}Width, {self.}DynamicHeight); x := {self.}EndX;
y := {self.}EndY - {self.}DynamicHeight;
w := {self.}Width;
h := {self.}DynamicHeight;
tmp := borders.Left.Sz ? borders.Left.Sz / 2 : 0.25;
x += tmp;
w -= tmp;
w -= borders.Right.Sz ? borders.Right.Sz / 2 : 0.25;
tmp := borders.Bottom.Sz ? borders.Bottom.Sz / 2 : 0.25;
y += tmp;
h -= tmp;
h -= borders.Top.Sz ? borders.Top.Sz / 2 : 0.25;
{self.}TSPage.PdfPage.Rectangle(x, y, w, h);
{self.}TSPage.PdfPage.Fill(); {self.}TSPage.PdfPage.Fill();
{self.}TSPage.PdfPage.SetRGBFill(0, 0, 0); {self.}TSPage.PdfPage.SetRGBFill(0, 0, 0);
{self.}Left := true; {self.}Left := true;
end end
borders := {self.}TcPr.TcBorders;
if {self.}Left then if {self.}Left then
{self.}DrawLine(borders.Left, {self.}EndX, {self.}EndY, {self.}EndX, {self.}EndY - {self.}DynamicHeight); {self.}DrawLine(borders.Left, {self.}EndX, {self.}EndY, {self.}EndX, {self.}EndY - {self.}DynamicHeight);
if {self.}Top then if {self.}Top then