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); [r, g, b] := array(0, 0, 0); if self.RPr.Color.Val then [r, g, b] := TSColorToolKit.HexToRGB(self.RPr.Color.Val); self.Page.SetRGBFill(r / 255, g / 255, b / 255); self.Page.SetFontAndSize(self.Font, self.RPr.Sz.Val); self.Page.BeginText(); self.Page.TextOut(self.EndX, self.EndY, self.Text); self.Page.EndText(); self.Page.SetRGBFill(0, 0, 0); if sysparams["_PDF_TEXT_DEBUG_"] then begin self.Page.SetLineWidth(0.1); self.Page.SetRGBStroke(1.0, 0.5, 0.0); self.Page.MoveTo(0, self.EndY); self.Page.LineTo(600, self.EndY); self.Page.Stroke(); end end;