xtool/contrib/mORMot/SQLite3/Samples/05 - Report created from code/SynPdfFormCanvas.dpr

63 lines
1.7 KiB
ObjectPascal

program SynPdfFormCanvas;
{$APPTYPE CONSOLE}
uses
{$I SynDprUses.inc} // use FastMM4 on older Delphi, or set FPC threads
SysUtils,
Math,
DateUtils,
SynCommons,
SynPDF;
const
PDFFactor: Single = 72.0 / 2.54;
var
obPDF: TPdfDocument;
obFormCanvas: TPdfFormWithCanvas;
begin
obPDF := TPdfDocument.Create(false,0,false);
obPDF.GeneratePDF15File := true;
obPDF.DefaultPaperSize := psA4;
obPDF.DefaultPageLandscape := false;
obPDF.CompressionMethod := cmFlateDecode;
obFormCanvas := TPdfFormWithCanvas.Create(obPDF,Trunc(5.0*PDFFactor),Trunc(5.0*PDFFactor));
obPDF.AddXObject('FORMOBJECT',obFormCanvas);
obFormCanvas.Canvas.SetTextRenderingMode(trFill);
obFormCanvas.Canvas.SetFont('Arial',10.0,[]);
obFormCanvas.Canvas.SetLineWidth(0.01*PDFFactor);
obFormCanvas.Canvas.Rectangle(0.0*PDFFactor,0.0*PDFFactor,4.9*PDFFactor,4.9*PDFFactor);
obFormCanvas.Canvas.Stroke;
obFormCanvas.Canvas.TextOut(1.0*PDFFactor,2.5*PDFFactor,'form text');
obFormCanvas.CloseCanvas;
obPDF.AddPage;
obPDF.Canvas.SetTextRenderingMode(trFill);
obPDF.Canvas.SetFont('Arial',10.0,[]);
obPDF.Canvas.SetLineWidth(0.01*PDFFactor);
obPDF.Canvas.Rectangle(1.0*PDFFactor,1.0*PDFFactor,19.0*PDFFactor,27.9*PDFFactor);
obPDF.Canvas.Stroke;
obPDF.Canvas.TextOut(2.0*PDFFactor,27.0*PDFFactor,'XObject form canvas sample');
obPDF.Canvas.DrawXObject(2.0*PDFFactor,5.0*PDFFactor,1.0,1.0,'FORMOBJECT');
obPDF.Canvas.DrawXObject(10.0*PDFFactor,10.0*PDFFactor,1.0,0.5,'FORMOBJECT');
obPDF.Canvas.DrawXObject(8.0*PDFFactor,15.0*PDFFactor,2.0,2.0,'FORMOBJECT');
obPDF.Canvas.DrawXObject(2.0*PDFFactor,20.0*PDFFactor,0.5,1.0,'FORMOBJECT');
obPDF.SaveToFile(ChangeFileExt(ExeVersion.ProgramFileName,'.pdf'));
FreeAndNil(obPDF);
end.