unigui+fastReport实现web打印方案

摘要:
=memAddress.Line.Text;ShowModal(无):结束;TObject);='会议通知。fr3'=真;=UniServerModule.NewCacheFileUrl(False;=False;procedureTfrmMeetingInfPrint.frxReport1BeforePrint(发件人;end:=sAddress;

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

unigui是delphi环境下快速开发web应用的优秀工具,不再赘述,下面直接记录使用搭配使用,基本逻辑就是:

unigui实现数据录入和浏览的web页---->点击打印按钮时使用【frxPDFExport】动态将报表导出为pdf------>将pdf文件动态载入打印预览窗口(UniURLFrame)实现打印预览功能。

具体实现:

1,用unigui控件实现数据的“增改删”,如下图:

unigui+fastReport实现web打印方案第1张

unigui+fastReport实现web打印方案第2张

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

unigui+fastReport实现web打印方案第3张

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

unigui+fastReport实现web打印方案第4张

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;

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

 unigui+fastReport实现web打印方案第5张

BTW,unigui配合Chrome浏览器效果最佳,与旧版IE的兼容性不太好。

QQ:508882988。

免责声明:文章转载自《unigui+fastReport实现web打印方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在springboot启动时给钉钉群发通知javaEE基础下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端缓存http请求

需求: 1、 重复的请求,使用缓存 2、 不重复的请求,允许发送 3、 连续两次重复的发送,两次返回的结果是一样的,且第二次不发送请求 1、搭建前端服务 vue-cli 一步到位  <template> <div class="hello"> <button v-on:click="getrs(1)">...

loki 数据库详解

介绍 LokiJS是一个面向文档的javascript数据库,与MongoDB有点相似。 它支持索引,查询和过滤数据集合。 LokiJS还支持更高级的功能,例如mapReduce,事务,并允许您实现自定义远程同步以将数据保存到服务器(或移动设备上的本地文件)。 磁盘的持久性已经在诸如nodejs之类的CommonJS环境中实现, 在移动设备上,您只需要请求...

async和await的小结

async 配合 await 使用 1、未使用 async 和 await  <el-button @click="getData">Promise</el-button> import getWeater from '@/app/login.js' methods: { getData() { // 未使用async...

DELPHI移动端支付宝支付

Delphi XE7 Android 应用接入支付宝SDK的方法     1      应用场景和准备工作: 采用XE系列开发的android apps。 apps中需要集成支付宝的支付能力。 支付到指定的商家(一般就是软件开发商自己啦),商家需要事先在支付宝的开放平台申请开通【支付宝无线快捷支付】,具体请百度。 开通【无线快捷支付】后,支付宝应该返回给...

jq+layui 总结1

1、//获取当前时间*24小时制var myDate = new Date(); var createTime=myDate.toLocaleString('chinese', { hour12: false }); 2、//获取select中选中的值var temType = $("#temType option:selected").text(); 3...

python中filter()函数

filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。 例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中...