From e5dfdeadc006c72fd6f119f20622ec1926acb38f Mon Sep 17 00:00:00 2001 From: csh Date: Mon, 29 Jul 2024 15:43:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A0=87=E9=A2=98=E5=9C=A8?= =?UTF-8?q?=E5=89=8D=EF=BC=8C=E7=9B=AE=E5=BD=95=E5=9C=A8=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E9=A1=B5=E7=A0=81=E6=97=A0=E6=B3=95=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSDocxToPdf.tsf | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/TSDocxToPdf.tsf b/TSDocxToPdf.tsf index 3e45426..2b2a99d 100644 --- a/TSDocxToPdf.tsf +++ b/TSDocxToPdf.tsf @@ -41,6 +41,7 @@ private point_: TSPoint; // 定位坐标点 page_array_: array of TSPage; toc_array_: tableArray; + toc_unmacthed_array_: tableArray; end; type TSPoint = class @@ -65,6 +66,7 @@ begin point_ := new TSPoint(); page_array_ := array(); toc_array_ := array(); + toc_unmacthed_array_ := array(); end; function TSDocxToPdf.Destroy(); @@ -292,12 +294,21 @@ function TSDocxToPdf.AddToc(anchor: string; toc: TSToc); begin if ifarray(toc_array_[anchor]) then toc_array_[anchor] union= array(toc); else toc_array_[anchor] := array(toc); + if toc_unmacthed_array_[anchor] then + begin + {self.}LinkToToc(anchor, toc_unmacthed_array_[anchor]); + toc_unmacthed_array_[anchor] := nil; + end end; function TSDocxToPdf.LinkToToc(anchor: string; page: TSPage); begin arr := toc_array_[anchor]; - if ifnil(arr) then return; + if ifnil(arr) then + begin + toc_unmacthed_array_[anchor] := page; + return; + end dst := page.PdfPage.CreateDestination(); for _,toc in arr do toc.LinkAnnot(dst);