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 ...
随机推荐
- 画布Canvas 画笔Paint
package com.example.m_evolution.View; import android.content.Context; import android.graphics.Canvas ...
- Windows网络发现无法启动
解决方法: 运行services.msc命令,打开服务界面.分别将Function Discovery Resource Publication.SSDP Discovery.UPnP Device ...
- 一篇文章搞定百度OCR图片文字识别API
一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104
- CentOS7 修改静态IP地址
Ip配置文件在/etc/sysconfig/network-scripts文件夹下,查找该文件的方法为: [root@localhost ~]# ll /etc/sysconfig/network-s ...
- Mysql运行状态查询命令及调优详解
(转载自点击打开链接) MySQL运行状态及调优(一) 一.查看MySQL运行情况SHOW STATUS; 二.查看INNODB数据库引擎运行状态SHOW ENGINE INNODB STATUS; ...
- class 关键字
class Ninja 表示创建一个名为Ninja的函数.constructor(...)指明Ninja函数的签名和函数体内容. class Ninja{ constructor(name){ thi ...
- python ftp 传输文件
# -*- coding: utf-8 -*- # 本地bytes 数据上报服务器同时创建文件from ftplib import FTP import time, _io from constant ...
- react-01
比较了半天VUE.Angular.React,最终选择React,下面从几个例子开始React的学习,先从单个的index.html,引用react.js开始 一.最简单的纯JS的代码 <!DO ...
- Spring事务,Bean生命周期
一.事务相关: 1.Spring事务基于Spring AOP切面编程: 2.AOP基于代理模式,得到需要开启事务的代码的代理对象: 3.而没有开启事务的Service方法里调用了开启事务 @Trans ...
- java 多线程的唤醒
package TestThread.ThreadSynchronized.TestInterruptedException; public class InterruptDemo { public ...