修复跨页表格出现空白单元格

This commit is contained in:
csh 2024-09-11 09:13:29 +08:00
parent 9886040fa9
commit 0417669eb2
2 changed files with 28 additions and 2 deletions

View File

@ -10,9 +10,11 @@ public
function FirstValidTSPage(): TSPage;
function SetVAlign();
function IsReComputeByCantSplit(): boolean;
function IfRemoveEmptyRectangle(): boolean;
public
VMerge;
RemoveFlag;
private
[weakref]parent_: TSPdfTableRange;
@ -105,7 +107,7 @@ function TSPdfCellRange.Do();override;
begin
for _,region in region_array_ do
begin
// if length(region.RangeArr) = 0 then continue;
if _ = 0 and {self.}RemoveFlag then continue;
region.RectangleRange.Do();
for _,range in region.RangeArr do
range.Do();
@ -218,3 +220,9 @@ begin
if {self.}VMerge then return false;
return tr_pr_.CantSplit and page_ <> {self.}TSPage;
end;
function TSPdfCellRange.IfRemoveEmptyRectangle(): boolean;
begin
if length(region_array_) < 2 then return false;
return length(region_array_[0].RangeArr) ? false : true;
end;

View File

@ -55,8 +55,26 @@ end;
function TSPdfTableRange.Do();override;
begin
for _,row in cell_range_array_ do
begin
flag := nil;
for _,range in row do
if ifObj(range) then range.Do();
begin
if ifnil(flag) and ifObj(range) then flag := range.IfRemoveEmptyRectangle();
if not ifObj(range) or flag <> range.IfRemoveEmptyRectangle() then
begin
flag := false;
break;
end
end
for _,range in row do
begin
if ifObj(range) then
begin
range.RemoveFlag := flag;
range.Do();
end
end
end
end;
function TSPdfTableRange.GetCellMatrix(grid_cols: array of GridColUnitDecorator);