近日单位需要用到会议通知单的打印功能,故引出篇。

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打印方案的更多相关文章

  1. 2013第39周一Web打印

    2013第39周一Web打印 项目中遇到了Java Web打印问题,简单调用IE浏览器的打印不能完全满足要求,于是就搜集了Web打印相关的主题,简单汇总一下.web打印难点在分页.页面纸张设置,页眉页 ...

  2. WEB打印的几种方案

    -------------------------------------------一  基于Web的打印方案比较分析-------------------------------- 基于web的套 ...

  3. unigui+fastreport报表打印

    unigui+fastreport报表打印   unigui+fastreport报表打印 FASTREPORT导出成PDF报表,UNIGUI的TUniURLFrame显示PDF报表并打印. func ...

  4. 打印方案之web打印

    前言: 前一段时间在工作中,遇到需要通过打印实现对报表或者工作流清单等事情时,都需要运用到打印功能,那么 ,这个时候你会怎么处理? 在这里,我们可以通过最简单的方式实现web打印功能,简单易懂,方便快 ...

  5. Fastreport生成WEB报表

    开发WEB应用系统通常都会遇到报表打印问题.简单应用可利用IE的页面打印功能,利用HTML标签控制格式来实现.但复杂的业务型应用系统,报表不仅是组成应用的 重要部分,还常常是相当复杂的.现在很多应用系 ...

  6. 专业的web打印插件

    Lodop是什么?参考官方网站:http://www.lodop.net/ 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程 ...

  7. web打印难题—背景不打印的简单不完美解决方案

    web打印在一些开发中是比较常见的需求,最简单的办法是使用css print进行控制:对于一些建议可以参考http://slodive.com/web-development/css-print-pa ...

  8. B/S架构 Web打印程序(Argox)

    B/S架构 Web打印程序 对于B/S架构下的管理软件系统,在客户端浏览器页面中如何透过本地打印机或网络打印机打印条码标签,Argox提供最常用的2种类型打印机集成方案. ●  PPLA 打印机IE游 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

随机推荐

  1. 微信小程序超出两行省略号

    display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; white-space: ...

  2. 【转载】在linux下别用zip 用tar来压缩文件 zip解压后还是utf-8 window10是GBK

    3.2 使用 unzip 命令解压缩 zip 文件 将 shiyanlou.zip 解压到当前目录:   $ unzip shiyanlou.zip 使用安静模式,将文件解压到指定目录:   $ un ...

  3. unity接入谷歌ADMob注意事项

    应用不显示广告,可能是广告sdk 依赖项没有注册 dependencies { implementation fileTree(dir: 'bin', include: ['*.jar']) impl ...

  4. asp.net WebService如何去掉asmx后缀

    现在有一个发布好的WebService,地址是http://hovertree.com:2706/UploadExpenseToConstract.asmx能不能把最后面的asmx去掉呢?变成http ...

  5. 面试简单整理之rabbitmq

    135.rabbitmq 的使用场景有哪些? 单反单收,单发多收,发布订阅,按路由发送,按主题发送 136.rabbitmq 有哪些重要的角色? Server,Consumer,Producer 13 ...

  6. day 8:open文件和with的使用

    本节内容: 1,open打开文件后的几种操作 2,with和open的连用 3,flush的使用 1:open 1)r权限 f = open("D:\\auto\project\\fulls ...

  7. 对js原型及构造函数的相关理解

    一.js中的原型创建(声明)一个函数,浏览器在内存中会创建一个对象.每个函数都默认会有一个属性prototype指向了这个对象,就是说prototype的属性的值就是这个对象.此对象就是该函数的原型对 ...

  8. 9 个 Yoinkmac使用小技巧,提升你的 Mac 文档解决效率

    Yoinkmac是一个工具类应用程序,用于在苹果电脑上进行临时文档暂存,就像一个“中转站”将文件从一个窗口轻松移动到另一个窗口.类似的软件包括苹果电脑上的Dropshelf和Unclutter,但相比 ...

  9. BCode解码练习

    在学习BT协议中的一个小练习 参考了 https://github.com/airtrack/bitwave 具体B编码解释 可以自行搜索或者参考 这篇文章 bittorrent 学习(一) 种子文件 ...

  10. sql server 临时库文件太大 迁移tempdb数据库

    由于装SQL Server时默认装在系统盘,使用一段时间后,tempdb数据库占了68G,导致整个C盘爆满,彻底解决办法就是迁移tempdb物理文件,移至其他大空间磁盘上. 将 tempdb 从其在磁 ...