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

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. web配置详细解释

    <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...

  2. HashMap、Hashtable、ConcurrentHashMap的原理与区别(简述)

    HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相 ...

  3. 自定义圆形ImageView(解决Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();报错问题)

    package com.bottle.bottlelilibrary.view; import android.content.Context; import android.graphics.Bit ...

  4. python基础 (序列化,os,sys,random,hashlib)

    1.序列化 定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...

  5. HTML5-盒子的使用

    一. border-color border-width border-style 属性用法遵循顺时针顺序. border-top- border-left- border-bottom- borde ...

  6. Vue 中使用 viewerjs进行本地上传预览图片

    https://www.cnblogs.com/shenjp/p/9754171.html 如果图片路径是 接口的返回信息的话,将路径存储在数组中,在this.$nextTick中实例化Viewer: ...

  7. EasyPR源码剖析(4):车牌定位之Sobel算子定位

    一.简介 sobel算子主要是用于获得数字图像的一阶梯度,常见的应用是边缘检测. Ⅰ.水平变化: 将 I 与一个奇数大小的内核进行卷积.比如,当内核大小为3时, 的计算结果为: Ⅱ.垂直变化: 将: ...

  8. 主要的Ajax框架都有什么?

    *  Dojo(dojotoolkit.org):* Prototype和Scriptaculous (www.prototypejs.org和script.aculo.us):* Direct We ...

  9. Find them, Catch them POJ - 1703

    题意:N个人,M次操作,操作一:A X Y,X,Y不是同一帮派,操作二:D X Y,判断X和Y的关系. 思路:如果X和Y不是同一帮派,那X与Y+N.Y与X+N是同一帮派,如果X与Y不在同一帮派且X与Y ...

  10. IPC rtsp转发服务器搭建

    sudo apt-get install libmoose-perl liburi-perl libmoosex-getopt-perl libsocket6-perl libanyevent-per ...