I'm completely new to Rave Reports and struggling to get to grips with it.
The goal is to have a PDF that contains a cover page and then any number of what is essentially the same page but containing different images.
I have set up the pages using the designer and can get the report to print or save to PDF.
I cannot figure out how to dynamically duplicate / add the page that will contain the images.
The process would be:
- Add cover page
- Iterate over list of images and add image page from existing layout / template
- Save to PDF
Any help or a point in the right direction would be much appreciated.
Thanks
--- UPDATE ---
I have used the following code but cannot figure out how to get it working. The report should have 4 images on each page so if there were 9 images there should be 3 pages. The loop created the correct amount of pages but the last images in the list are repeated on each page.
Any ideas?
procedure TForm1.Button1Click(Sender: TObject);
var
ReportPages : array of TRavePage;
CoverPage : TRavePage;
MyProject : TRaveReport;
PageList : TRaveComponentList;
staffImage : TRaveBitmap;
numberOfPages : Integer;
numberOfImages : Integer;
imageNumber : Integer;
pageNumber : Integer;
imagesPerPage : Integer;
pageImageCounter : Integer;
isFirstImage : Boolean;
isLastImage : Boolean;
begin
buildImageList;
imageNumber := 0;
imagesPerPage := 4;
numberOfImages := imageList.count;
numberOfPages := ceil(numberOfImages / imagesPerPage);
RvSystem1.DoNativeOutput := false;
RvSystem1.RenderObject := RvRenderPDF1;
RvSystem1.OutputFileName := 'Project1.pdf';
RvProject1.Open;
RvProject1.SetParam('Name1', Name1Edit.Text);
RvProject1.SetParam('Name2', Name2Edit.Text);
MyProject := RvProject1.ProjMan.FindReport('staffImageProof', true) as TRaveReport;
CoverPage:= RvProject1.ProjMan.FindRaveComponent('coverPage', MyProject) as TRavePage;
PageList:= TRaveComponentList.Create;
PageList.Add(CoverPage);
pageNumber := 0;
pageImageCounter := 0;
setLength(ReportPages, numberOfPages);
for imageNumber := 0 to numberOfImages - 1 do
begin
inc(pageImageCounter);
if pageImageCounter = 1 then
begin
ReportPages[pageNumber] := RvProject1.ProjMan.FindRaveComponent('imagePage', MyProject) as TRavePage;
end;
staffImage := ReportPages[pageNumber].FindComponent('staffImage' + intToStr(pageImageCounter)) as TRaveBitmap;
staffImage.Image.LoadFromFile(imageList[imageNumber]);
if (pageImageCounter = imagesPerPage) or (imageNumber = (numberOfImages - 1)) then
begin
PageList.Add(ReportPages[pageNumber]);
pageImageCounter := 0;
inc(pageNumber);
end;
end;
MyProject.PageList := PageList;
RvProject1.SelectReport('staffImageProof', false);
RvProject1.StoreRAV := true;
RvProject1.Execute;
RvProject1.Close;
Finalize(ReportPages);
end;