parent
4de1484ec3
commit
eb6e898ed7
|
|
@ -127,7 +127,7 @@ begin
|
||||||
// println("_ = {}, xml_file_ = {}", _, xml_file_);
|
// println("_ = {}, xml_file_ = {}", _, xml_file_);
|
||||||
if element.LocalName = "p" then {self.}TransformP(text_point_, element, w, lb);
|
if element.LocalName = "p" then {self.}TransformP(text_point_, element, w, lb);
|
||||||
else if element.LocalName = "tbl" then {self.}TransformTbl(text_point_, element, w, lb);
|
else if element.LocalName = "tbl" then {self.}TransformTbl(text_point_, element, w, lb);
|
||||||
else if element.LocalName = "sdt" then {self.}TransformSdt(sect_ware, element);
|
else if element.LocalName = "sdt" then {self.}TransformSdt(text_point_, element, w, lb);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
{self.}ProcessNumpages();
|
{self.}ProcessNumpages();
|
||||||
|
|
@ -215,6 +215,8 @@ begin
|
||||||
|
|
||||||
"": "●",
|
"": "●",
|
||||||
"": "■",
|
"": "■",
|
||||||
|
"": "●",
|
||||||
|
|
||||||
);
|
);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -369,7 +371,6 @@ begin
|
||||||
{self.}TransformP(point, p, w, lb);
|
{self.}TransformP(point, p, w, lb);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TSDocxToPdf.ProcessNumpages();
|
function TSDocxToPdf.ProcessNumpages();
|
||||||
begin
|
begin
|
||||||
nums := page_array_[length(page_array_)-1].Number;
|
nums := page_array_[length(page_array_)-1].Number;
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ begin
|
||||||
end
|
end
|
||||||
{self.}EndY := cell_y - tbl_pr_.TblCellMar.Bottom.W;
|
{self.}EndY := cell_y - tbl_pr_.TblCellMar.Bottom.W;
|
||||||
{self.}DynamicHeight += tbl_pr_.TblCellMar.Top.W + tbl_pr_.TblCellMar.Bottom.W;
|
{self.}DynamicHeight += tbl_pr_.TblCellMar.Top.W + tbl_pr_.TblCellMar.Bottom.W;
|
||||||
if {self.}EndY < {self.}LowerBound then
|
if {self.}EndY < {self.}LowerBound and not range.Empty() then
|
||||||
begin
|
begin
|
||||||
page_ := docx_to_pdf_.GetNextPage(page_);
|
page_ := docx_to_pdf_.GetNextPage(page_);
|
||||||
if ifnil(page_) then page_ := docx_to_pdf_.AddTSPage();
|
if ifnil(page_) then page_ := docx_to_pdf_.AddTSPage();
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ public
|
||||||
function SetAllRangeProp(pg: TSPage; sx: real; sy: real; ex: real; ey: real; w: real; fh: real; dh: real);
|
function SetAllRangeProp(pg: TSPage; sx: real; sy: real; ex: real; ey: real; w: real; fh: real; dh: real);
|
||||||
function Align(jc: string);
|
function Align(jc: string);
|
||||||
function AdjustRangeOffset(page: TSPage; x_offset: real; y_offset: real);
|
function AdjustRangeOffset(page: TSPage; x_offset: real; y_offset: real);
|
||||||
|
function AlignRightBound(right_bound: real);
|
||||||
|
|
||||||
private
|
private
|
||||||
range_array_: array of TSPdfBasicRange;
|
range_array_: array of TSPdfBasicRange;
|
||||||
|
|
@ -68,3 +69,15 @@ begin
|
||||||
if not ifnil(y_offset) then range.EndY += y_offset;
|
if not ifnil(y_offset) then range.EndY += y_offset;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TSPdfLineRange.AlignRightBound(right_bound: real);
|
||||||
|
begin
|
||||||
|
last := range_array_[length(range_array_)-1];
|
||||||
|
diff := right_bound - (last.EndX + last.Width);
|
||||||
|
if diff > 1e-6 then
|
||||||
|
begin
|
||||||
|
avg := diff / (length(range_array_) - 1);
|
||||||
|
for i:=1 to length(range_array_)-1 do
|
||||||
|
range_array_[i].EndX += avg * i;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ public
|
||||||
function GetLastPage(): TSPage;
|
function GetLastPage(): TSPage;
|
||||||
function AdjustRangeOffset(page: TSPage; x_offset: real; y_offset: real);
|
function AdjustRangeOffset(page: TSPage; x_offset: real; y_offset: real);
|
||||||
function GetLineRangeArr(): array of TSPdfLineRange;
|
function GetLineRangeArr(): array of TSPdfLineRange;
|
||||||
|
function Empty(): boolean;
|
||||||
|
|
||||||
private
|
private
|
||||||
function SetPPr(var ppr: PPr);
|
function SetPPr(var ppr: PPr);
|
||||||
|
|
@ -37,6 +38,7 @@ private
|
||||||
function HyperlinkToToc();
|
function HyperlinkToToc();
|
||||||
function HyperlinkToTextRange(hyperlink: Hyperlink; ppr: PPrUnitDecorator);
|
function HyperlinkToTextRange(hyperlink: Hyperlink; ppr: PPrUnitDecorator);
|
||||||
function GetXYCordinates(): array of real;
|
function GetXYCordinates(): array of real;
|
||||||
|
function AlignRightBound();
|
||||||
|
|
||||||
private
|
private
|
||||||
[weakref]docx_to_pdf_: TSDocxToPdf;
|
[weakref]docx_to_pdf_: TSDocxToPdf;
|
||||||
|
|
@ -51,6 +53,8 @@ private
|
||||||
placeholder_array_: tableArray;
|
placeholder_array_: tableArray;
|
||||||
table_style_id_: string;
|
table_style_id_: string;
|
||||||
table_style_type_: string;
|
table_style_type_: string;
|
||||||
|
empty_: boolean;
|
||||||
|
right_bound_: real;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
type FldStruct = class
|
type FldStruct = class
|
||||||
|
|
@ -117,12 +121,14 @@ begin
|
||||||
line_range_array_ := array();
|
line_range_array_ := array();
|
||||||
hyperlink_array_ := array();
|
hyperlink_array_ := array();
|
||||||
bookmark_array_ := array();
|
bookmark_array_ := array();
|
||||||
|
empty_ := false;
|
||||||
{self.}TSPage := page_;
|
{self.}TSPage := page_;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSPdfParagraphRange.Calc(): tableArray;
|
function TSPdfParagraphRange.Calc(): tableArray;
|
||||||
begin
|
begin
|
||||||
// ppr.rpr是无效的,应该以ppr.pStyle为准
|
// ppr.rpr是无效的,应该以ppr.pStyle为准
|
||||||
|
right_bound_ := {self.}StartX + {self.}Width;
|
||||||
if ifnil(paragraph_.XmlChildPPr) then paragraph_.XmlChildPPr := new PPr();
|
if ifnil(paragraph_.XmlChildPPr) then paragraph_.XmlChildPPr := new PPr();
|
||||||
{self.}SetPPr(paragraph_.PPr);
|
{self.}SetPPr(paragraph_.PPr);
|
||||||
ppr_unit_decorator_ := new PPrUnitDecorator(paragraph_.PPr);
|
ppr_unit_decorator_ := new PPrUnitDecorator(paragraph_.PPr);
|
||||||
|
|
@ -200,6 +206,7 @@ begin
|
||||||
line_space := {self.}GetParagraphLineSpace(ppr_unit_decorator_.RPr.Sz.Val, ppr_unit_decorator_.Spacing.Line);
|
line_space := {self.}GetParagraphLineSpace(ppr_unit_decorator_.RPr.Sz.Val, ppr_unit_decorator_.Spacing.Line);
|
||||||
{self.}DynamicHeight += line_space;
|
{self.}DynamicHeight += line_space;
|
||||||
{self.}EndY -= {self.}DynamicHeight;
|
{self.}EndY -= {self.}DynamicHeight;
|
||||||
|
empty_ := true;
|
||||||
end
|
end
|
||||||
if placeholder_array_ then return false;
|
if placeholder_array_ then return false;
|
||||||
{self.}RangesToLines();
|
{self.}RangesToLines();
|
||||||
|
|
@ -424,6 +431,7 @@ begin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
{self.}SetLinesAlignment();
|
{self.}SetLinesAlignment();
|
||||||
|
{self.}AlignRightBound();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSPdfParagraphRange.SetLinesAlignment();
|
function TSPdfParagraphRange.SetLinesAlignment();
|
||||||
|
|
@ -432,6 +440,14 @@ begin
|
||||||
line_range.Align(ppr_unit_decorator_.Jc.Val);
|
line_range.Align(ppr_unit_decorator_.Jc.Val);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TSPdfParagraphRange.AlignRightBound();
|
||||||
|
begin
|
||||||
|
len := length(line_range_array_);
|
||||||
|
if len = 1 then return;
|
||||||
|
for i:=0 to len-2 do
|
||||||
|
line_range_array_[i].AlignRightBound(right_bound_);
|
||||||
|
end;
|
||||||
|
|
||||||
function TSPdfParagraphRange.CheckAndAddPage(y: real; offset: real): boolean;
|
function TSPdfParagraphRange.CheckAndAddPage(y: real; offset: real): boolean;
|
||||||
begin
|
begin
|
||||||
if y - offset < {self.}LowerBound then
|
if y - offset < {self.}LowerBound then
|
||||||
|
|
@ -855,3 +871,8 @@ function TSPdfParagraphRange.GetLineRangeArr(): array of TSPdfLineRange;
|
||||||
begin
|
begin
|
||||||
return line_range_array_;
|
return line_range_array_;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TSPdfParagraphRange.Empty(): boolean;
|
||||||
|
begin
|
||||||
|
return empty_;
|
||||||
|
end;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue