52 lines
1.6 KiB
Plaintext
52 lines
1.6 KiB
Plaintext
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);
|
|
y := {self.}EndY;
|
|
sz := {self.}RPr.Sz.Val;
|
|
if {self.}RPr.VertAlign.Val = "superscript" then
|
|
begin
|
|
y += sz / 3;
|
|
sz := sz * 2 / 3;
|
|
end
|
|
{self.}TSPage.PdfPage.SetRGBFill(r / 255, g / 255, b / 255);
|
|
{self.}TSPage.PdfPage.SetFontAndSize({self.}Font, sz);
|
|
{self.}TSPage.PdfPage.BeginText();
|
|
{self.}TSPage.PdfPage.TextOut({self.}EndX, y, {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;
|
|
|