type TSPdfTextRange = class(TSPdfBasicRange) uses TSColorToolKit; public function Create(); function Do();override; public RPr: RPr; Text: string; Font: PdfFont; end; function TSPdfTextRange.Create(); begin class(TSPdfBasicRange).Create(); {self.}RPr := nil; {self.}Text := ""; {self.}Font := nil; end; function TSPdfTextRange.Do(); begin // println("text = {}, endx = {}, endy = {}, width = {}, page = {}", ansiToUtf8(text), endx, endy, width, page); // println("Text = {}, sz = {}, szcs = {}, rpr.I = {}, color = {}", ansiToUtf8({self.}Text), {self.}RPr.Sz.Val, {self.}RPr.SzCs.Val, {self.}RPr.I, {self.}RPr.Color.Val); [r, g, b] := array(0, 0, 0); if {self.}RPr.Color.Val and {self.}RPr.Color.Val <> "auto" then [r, g, b] := TSColorToolKit.HexToRGB({self.}RPr.Color.Val); {self.}TSPage.PdfPage.SetRGBFill(r / 255, g / 255, b / 255); {self.}TSPage.PdfPage.SetFontAndSize({self.}Font, {self.}RPr.Sz.Val); {self.}TSPage.PdfPage.BeginText(); {self.}TSPage.PdfPage.TextOut({self.}EndX, {self.}EndY, {self.}Text); {self.}TSPage.PdfPage.EndText(); {self.}TSPage.PdfPage.SetRGBFill(0, 0, 0); if sysparams["_PDF_TEXT_DEBUG_"] then begin {self.}TSPage.PdfPage.SetLineWidth(0.1); {self.}TSPage.PdfPage.SetRGBStroke(1.0, 0.5, 0.0); {self.}TSPage.PdfPage.MoveTo(0, {self.}EndY); {self.}TSPage.PdfPage.LineTo(600, {self.}EndY); {self.}TSPage.PdfPage.Stroke(); end end;