source upload
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
program SynPdfLayers;
|
||||
|
||||
{$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;
|
||||
|
||||
obMainLayer1: TPdfOptionalContentGroup;
|
||||
obMainLayer2: TPdfOptionalContentGroup;
|
||||
obMainLayer3: TPdfOptionalContentGroup;
|
||||
|
||||
obSubLayer1: TPdfOptionalContentGroup;
|
||||
obSubLayer2: TPdfOptionalContentGroup;
|
||||
obSubLayer3: TPdfOptionalContentGroup;
|
||||
|
||||
obSubSubLayer1: TPdfOptionalContentGroup;
|
||||
obSubSubLayer2: TPdfOptionalContentGroup;
|
||||
|
||||
obRadioLayer1: TPdfOptionalContentGroup;
|
||||
obRadioLayer2: TPdfOptionalContentGroup;
|
||||
obRadioLayer3: TPdfOptionalContentGroup;
|
||||
|
||||
|
||||
begin
|
||||
obPDF := TPdfDocument.Create(false,0,false);
|
||||
obPDF.UseOptionalContent := true;
|
||||
obPDF.DefaultPaperSize := psA4;
|
||||
obPDF.DefaultPageLandscape := true;
|
||||
obPDF.CompressionMethod := cmFlateDecode;
|
||||
|
||||
obMainLayer1 := obPDF.CreateOptionalContentGroup(nil,'Main Layer 1',true);
|
||||
obMainLayer2 := obPDF.CreateOptionalContentGroup(nil,'Main Layer 2',true);
|
||||
obMainLayer3 := obPDF.CreateOptionalContentGroup(nil,'Main Layer 3',true);
|
||||
|
||||
obSubLayer1 := obPDF.CreateOptionalContentGroup(obMainLayer1,'Sub Layer 1',true);
|
||||
obSubLayer2 := obPDF.CreateOptionalContentGroup(obMainLayer1,'Sub Layer 2',true);
|
||||
obSubLayer3 := obPDF.CreateOptionalContentGroup(obMainLayer1,'Sub Layer 3',true);
|
||||
|
||||
obSubSubLayer1 := obPDF.CreateOptionalContentGroup(obSubLayer1,'Sub Sub Layer 1',false);
|
||||
obSubSubLayer2 := obPDF.CreateOptionalContentGroup(obSubLayer1,'Sub Sub Layer 2',false);
|
||||
|
||||
obRadioLayer1 := obPDF.CreateOptionalContentGroup(obMainLayer2,'Radio Layer 1',true);
|
||||
obRadioLayer2 := obPDF.CreateOptionalContentGroup(obMainLayer2,'Radio Layer 2',false);
|
||||
obRadioLayer3 := obPDF.CreateOptionalContentGroup(obMainLayer2,'Radio Layer 3',false);
|
||||
|
||||
// to use the main layers as radios uncomment following line and set only main layer 1 to visible (line 40ff)
|
||||
//obPDF.CreateOptionalContentRadioGroup([obMainLayer1,obMainLayer2,obMainLayer3]);
|
||||
|
||||
obPDF.CreateOptionalContentRadioGroup([obRadioLayer1,obRadioLayer2,obRadioLayer3]);
|
||||
|
||||
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,27.7*PDFFactor,19.0*PDFFactor);
|
||||
obPDF.Canvas.Stroke;
|
||||
|
||||
obPDF.Canvas.TextOut(2.0*PDFFactor,17.0*PDFFactor,'Main Layer 1:');
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obMainLayer1);
|
||||
begin
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,17.0*PDFFactor,'Text visible in Main Layer 1');
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obSubLayer1);
|
||||
begin
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,15.0*PDFFactor,'Text visible in Sub Layer 1');
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obSubSubLayer1);
|
||||
obPDF.Canvas.TextOut(15.0*PDFFactor,15.0*PDFFactor,'Text visible in Sub Sub Layer 1');
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obSubSubLayer2);
|
||||
obPDF.Canvas.TextOut(22.0*PDFFactor,15.0*PDFFactor,'Text visible in Sub Sub Layer 2');
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
end;
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obSubLayer2);
|
||||
begin
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,14.0*PDFFactor,'Text visible in Sub Layer 2');
|
||||
end;
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obSubLayer3);
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,13.0*PDFFactor,'Text visible in Sub Layer 3');
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
end;
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
|
||||
obPDF.Canvas.TextOut(2.0*PDFFactor,10.0*PDFFactor,'Main Layer 2:');
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obMainLayer2);
|
||||
begin
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,10.0*PDFFactor,'Text visible in Main Layer 2');
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obRadioLayer1);
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,8.0*PDFFactor,'Text visible in Radio Layer 1');
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obRadioLayer2);
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,7.0*PDFFactor,'Text visible in Radio Layer 2');
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obRadioLayer3);
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,6.0*PDFFactor,'Text visible in Radio Layer 3');
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
end;
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
obPDF.Canvas.TextOut(2.0*PDFFactor,2.0*PDFFactor,'Main Layer 3:');
|
||||
|
||||
obPDF.Canvas.BeginMarkedContent(obMainLayer3);
|
||||
obPDF.Canvas.TextOut(10.0*PDFFactor,2.0*PDFFactor,'Text visible in Main Layer 3');
|
||||
obPDF.Canvas.EndMarkedContent;
|
||||
|
||||
obPDF.SaveToFile(ChangeFileExt(ExeVersion.ProgramFileName,'.pdf'));
|
||||
|
||||
FreeAndNil(obPDF);
|
||||
end.
|
Reference in New Issue
Block a user