63 lines
1.7 KiB
ObjectPascal
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.
|