Add a Drawcommand to a PDF-Page
Hi,
I have a TppDBArchiveReader and with the help of
"How To...Add a Drawcommand to a Page" from the rbWiki i can
draw to the screen and the printer.
Now i like to draw to the PDF-Output.
Which changes i have to make, so that this will also work with
PDF?
Best regards
Olaf
RB 11.08
Delphi 7
I have a TppDBArchiveReader and with the help of
"How To...Add a Drawcommand to a Page" from the rbWiki i can
draw to the screen and the printer.
Now i like to draw to the PDF-Output.
Which changes i have to make, so that this will also work with
PDF?
Best regards
Olaf
RB 11.08
Delphi 7
This discussion has been closed.
Comments
For the example, instead of using a TppRasterDevice, use a TppDevice instead
and change the code to something like the following to include file devices.
procedure TForm1.ppArchiveReader1BeforePrint(Sender: TObject);
var
lDevice: TppDevice;
begin
// get reference to the screen, printer, or file device
if (ppArchiveReader1.FileDevice <> nil) then
lDevice := ppArchiveReader1.FileDevice
else if (ppArchiveReader1.PrinterDevice <> nil) then
lDevice := ppArchiveReader1.PrinterDevice
else if (ppArchiveReader1.PreviewForm <> nil) then
lDevice := TppViewer(ppArchiveReader1.PreviewForm.Viewer).ScreenDevice
else
lDevice := nil;
// attach handler to device OnPageReceive event
if (lDevice <> nil) then
lDevice.OnPageReceive := ehPageReceive;
end;
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Thanks, it works.
BUT...
I have a text drawcommand with
lDrawText.Border.Weight := 1.2;
lDrawText.Border.BorderPositions := [bpTop, bpBottom];
Printing to the PrinterPreview there will be borders.
Printing to the PDF there will not be some borders.
There are only two very little pieces of gray at the textstart
(top and bottom).
Is there something going wrong?
Best regards, Olaf
In my testing with RB 11.08 and Delphi 7, using your exact code below to
assign a top and bottom border, the PDF output was correct. If possible,
please send a simple example that demonstrates this issue to
support@digital-metaphors.com in .zip format and I'll take a look at it for
you.
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Thanks for the help!
AND FOR ALL:
I made the following errors:
I had to make some changes to rbWiki example
How To...Add a Drawcommand to a Page
For PDF you need a file device
...
var
lDevice: TppDevice;
begin
// get reference to the screen, printer, or file device
if (ppArchiveReader1.FileDevice <> nil) then
lDevice := ppArchiveReader1.FileDevice
else if (ppArchiveReader1.PrinterDevice <> nil) then
lDevice := ppArchiveReader1.PrinterDevice
else if (prReader.PreviewForm <> nil) then
lDevice := TppViewer(ppArchiveReader1.PreviewForm.Viewer).ScreenDevice
else
lDevice := nil;
...
In the AddDrawCommand procedure i used WordWrapped text.
When you use AutoSize=True, you can not use WordWrapped text.
It is better and easier to use "lDrawText.Text"
Regards, Olaf