delphi 如何将quickreport将报表转成图片

最是那一 2017-11-05 10:42:10
如何将quickreport将报表转成JPG或者BMP图片
在网上找了一段代码,结果生成的是一个空白的bmp,(转成bmp图片也行)
客户需要将报表预览的同时生成JPG图片,

procedure TForm5.Button4Click(Sender: TObject);
var BMP: TBitMap;
StoredUnits: TQRUnit;
i: integer;
StoreDir: string;
begin
StoreDir:= ' '; {!!! Assign folder to store here (with ending '\ '), leave
blank to store in the .exe 's folder}
QuickRep1.Prepare;
StoredUnits:=QuickRep1.Units;
QuickRep1.Units:=Pixels;
try
for i:=1 to QuickRep1.QRPrinter.PageCount do begin
BMP:=TBitMap.Create;
try
BMP.Width:=Round(QuickRep1.Page.Width);
BMP.Height:=Round(QuickRep1.Page.Length);
QuickRep1.QRPrinter.PageNumber:=i;
BMP.Canvas.Draw(0, 0, QuickRep1.QRPrinter.Page);
BMP.SaveToFile(StoreDir+ 'Page '+IntToStr(i)+ '.bmp ');
finally
BMP.Free;
end;
end;
finally
QuickRep1.Units:=StoredUnits;
end;
end;
...全文
723 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
最是那一 2017-11-08
  • 打赏
  • 举报
回复
问题解决了,用如下方法即可。 procedure TForm1.SaveThisReport(aReport: TQuickRep); var bitMap: TBitMap; i: Integer; begin aReport.Prepare; bitMap := TBitMap.Create; bitmap.Width := aReport.QRPrinter.PageCount * aReport.Width; bitmap.Height := aReport.QRPrinter.PageCount * aReport.Height; for i:=0 to aReport.QRPrinter.PageCount-1 do bitmap.Canvas.Draw(0, i*aReport.QRPrinter.PageCount, aReport.QRPrinter.GetPage(i+1)); bitmap.SaveToFile(ExtractFilePath(Application.ExeName) + 'EmailReport.bmp'); end; BTW, I am using this bitmap for email attachment, now it also works but the size of bitmap is so big ~1.7 MB for one page report.
最是那一 2017-11-07
  • 打赏
  • 举报
回复
引用 5 楼 lyhoo163 的回复:
虚拟打印机,这是风曲线救国的方法,就是在计算机上安装一个虚拟性的打印机,打印时,直接使用“虚拟打印机”,打印出来的,就是DBF或图形。 虚拟打印机,可以在网上搜索一下,有很多种。 解决问题,要图形文件,还得从控件自身去搞。
终于等到您了,一直在关注您,自从小弟接触delphi以来(才2个月纯小白啊),看过您关于视频捕捉软件对我帮助很大啊。 我用的是quickreport 控件,控件自身怎么搞啊,能明示吗?
lyhoo163 2017-11-07
  • 打赏
  • 举报
回复
虚拟打印机,这是风曲线救国的方法,就是在计算机上安装一个虚拟性的打印机,打印时,直接使用“虚拟打印机”,打印出来的,就是DBF或图形。 虚拟打印机,可以在网上搜索一下,有很多种。 解决问题,要图形文件,还得从控件自身去搞。
最是那一 2017-11-06
  • 打赏
  • 举报
回复
引用 1 楼 yisuylm 的回复:
如果不介意实现方式,建议安装虚拟打印机,可以把任何打印内容转换为图片
虚拟机打印图片能给个demo吗,大侠。
最是那一 2017-11-06
  • 打赏
  • 举报
回复
引用 3 楼 doloopcn 的回复:
BMP转换为JPEG是有现成的算法的,本站上应该有
我是想将quickreport报表转成JPG或者BMP图片啊。有啥好办法吗?
日月路明 2017-11-06
  • 打赏
  • 举报
回复
如果不介意实现方式,建议安装虚拟打印机,可以把任何打印内容转换为图片
doloopcn 2017-11-06
  • 打赏
  • 举报
回复
BMP转换为JPEG是有现成的算法的,本站上应该有

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧