unigui+fastReport实现web打印方案
近日单位需要用到会议通知单的打印功能,故引出篇。
unigui是delphi环境下快速开发web应用的优秀工具,不再赘述,下面直接记录使用搭配使用,基本逻辑就是:
unigui实现数据录入和浏览的web页---->点击打印按钮时使用【frxPDFExport】动态将报表导出为pdf------>将pdf文件动态载入打印预览窗口(UniURLFrame)实现打印预览功能。
具体实现:
1,用unigui控件实现数据的“增改删”,如下图:


2,unigui实现预览窗口,如下图,需要引入frxReport、frxPDFExport和frxRichObject组件:

3,双击frxReport设计好会议通知单模板,且将文件另存到unigui发布目录的files文件夹下,文件名为”会议通知单模板.fr3“,如下图:

4,点击【打印会议通知单】按钮实现如下代码(利用frxReport打开已设计好的会议通知单模板.fr3,通过frxPDFExport将frxReport的报表导出为pdf文件):

procedure TfrmMeetingInf.btnPrintClick(Sender: TObject);
begin
with frmMeetingInfPrint do begin
try
sTitle := memTitle.Lines.Text;
sTime := edTime.Text;
sPsn := edPsn.Text;
sAddress := memAddress.Lines.Text;
ShowModal(nil);
finally
end;
end;
end;


procedure TfrmMeetingInfPrint.UniFormBeforeShow(Sender: TObject);
var
rptFileName,url: string;
begin
rptFileName := '会议通知单.fr3';
frxReport1.Clear();
try
frxReport1.LoadFromFile(UniServerModule.FilesFolderPath+rptFileName); //存放在files目录下面
frxReport1.PrintOptions.ShowDialog := false;
frxReport1.ShowProgress := false;
frxReport1.EngineOptions.SilentMode := true;
frxReport1.EngineOptions.EnableThreadSafe := true;
frxReport1.EngineOptions.DestroyForms := false;
frxReport1.EngineOptions.UseGlobalDataSetList := false; frxPDFExport1.Background:=true;
frxPDFExport1.ShowProgress:=False;
frxPDFExport1.ShowDialog:=false;
frxPDFExport1.FileName:=UniServerModule.NewCacheFileUrl(False,'pdf','','',url,true);
frxPDFExport1.DefaultPath := ''; frxReport1.PreviewOptions.AllowEdit := false;
frxReport1.PrepareReport();
frxReport1.Export(frxPDFExport1); UniURLFrame1.URL := url;
finally
end;
end;


procedure TfrmMeetingInfPrint.frxReport1BeforePrint(
Sender: TfrxReportComponent);
begin
if (Sender is TfrxMemoView) then begin
if ((Sender as TfrxMemoView).Name = 'memTitle') then begin
(Sender as TfrxMemoView).Memo.Text := sTitle;
end;
if ((Sender as TfrxMemoView).Name = 'memPsn') then begin
(Sender as TfrxMemoView).Memo.Text := sPsn;
end;
if ((Sender as TfrxMemoView).Name = 'memTime') then begin
(Sender as TfrxMemoView).Memo.Text := sTime;
end;
if ((Sender as TfrxMemoView).Name = 'memAddress') then begin
(Sender as TfrxMemoView).Memo.Text := sAddress;
end;
end;
end;

完成上述几步,就能看到成果了:

BTW,unigui配合Chrome浏览器效果最佳,与旧版IE的兼容性不太好。
QQ:508882988。
unigui+fastReport实现web打印方案的更多相关文章
- 2013第39周一Web打印
2013第39周一Web打印 项目中遇到了Java Web打印问题,简单调用IE浏览器的打印不能完全满足要求,于是就搜集了Web打印相关的主题,简单汇总一下.web打印难点在分页.页面纸张设置,页眉页 ...
- WEB打印的几种方案
-------------------------------------------一 基于Web的打印方案比较分析-------------------------------- 基于web的套 ...
- unigui+fastreport报表打印
unigui+fastreport报表打印 unigui+fastreport报表打印 FASTREPORT导出成PDF报表,UNIGUI的TUniURLFrame显示PDF报表并打印. func ...
- 打印方案之web打印
前言: 前一段时间在工作中,遇到需要通过打印实现对报表或者工作流清单等事情时,都需要运用到打印功能,那么 ,这个时候你会怎么处理? 在这里,我们可以通过最简单的方式实现web打印功能,简单易懂,方便快 ...
- Fastreport生成WEB报表
开发WEB应用系统通常都会遇到报表打印问题.简单应用可利用IE的页面打印功能,利用HTML标签控制格式来实现.但复杂的业务型应用系统,报表不仅是组成应用的 重要部分,还常常是相当复杂的.现在很多应用系 ...
- 专业的web打印插件
Lodop是什么?参考官方网站:http://www.lodop.net/ 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程 ...
- web打印难题—背景不打印的简单不完美解决方案
web打印在一些开发中是比较常见的需求,最简单的办法是使用css print进行控制:对于一些建议可以参考http://slodive.com/web-development/css-print-pa ...
- B/S架构 Web打印程序(Argox)
B/S架构 Web打印程序 对于B/S架构下的管理软件系统,在客户端浏览器页面中如何透过本地打印机或网络打印机打印条码标签,Argox提供最常用的2种类型打印机集成方案. ● PPLA 打印机IE游 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...
随机推荐
- 通信导论-IP数据网络基础(3)
ICMP(IP辅助协议)--网际控制报文协议 ICMP报文种类:ICMP差错报文(终点不可达.时间超过等5种)和ICMP询问报文(回送请求和回答请求.时间戳请求和回答报文2种) ICMP是一种集差错报 ...
- 【C++】undered_map的用法总结(1)
1.介绍 unordered_map是一个关联容器,内部采用的是hash表结构,拥有快速检索的功能. 1.1 特性 关联性:通过key去检索value,而不是通过绝对地址(和顺序容器不同)无序性:使用 ...
- 2018-2019-2 20165315 《网络对抗技术》Exp3 免杀原理与实践
2018-2019-2 20165315 <网络对抗技术>Exp3 免杀原理与实践 一.实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion ...
- node杂谈(一)
在node中var作用域为当前js文件 每一个js文件都是一个module对象 global为全局对象,可以用在不同js之间访问(不要设立过多的全局对象,除非必要,比如设立生产环境还是开发环境) a ...
- ViewPager中Fragment的重复创建、复用问题
在ViewPager中的Fragment的生命周期 随着页面的切换 当前的展示页相邻的页面生命周期一直在变化 一开始 刚进入Activity时候,ViewPager默认初始化好前两个Fragment ...
- docker-compose安装
安装docker-compose两种最新的docker安装方式 1.从github上下载docker-compose二进制文件安装下载最新版的docker-compose文件 $ sudo curl ...
- npm与cnpm的install无反应
问题描述 1.npm -v检查版本正常,npm install安装依赖提示超时 2.cnpm -v检查版本正常,cnpm install安装依赖无反应(输入命令后没有任何提示,一直卡在那) 解决(参考 ...
- centos7安装zabbix server
1.参照下列网址方法,打开端口:80,3306,443,22,10050,10051(可能实际不需要打开这么多) https://www.cnblogs.com/lw-2019forlinuxpyth ...
- celery 应用
开启服务 #日志 级别 celery -A write_file worker -l info file name :write_file.pyfrom celery import Celery ce ...
- 获取txt md5值上传文件完整性校验
网络上传文件到服务器 做md5 校对.判断文件是否破坏 首先求txt文件的md5值 ,1万条数据 求出的值 文件MD5:e5467b6a8e3c26af8c5af0bda3739280 服务器处理程序 ...