场景


参照上面实现使用FastReport导出PDF的实现后。

如果要在点击导出按钮后同时进行PDF预览并弹出另存为对话框。

效果如下:

Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框_控件

 

注:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

新建窗体并拖拽一个button和FastReport的PreviewControl

Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框_FastReport_02

 

在button的点击事件中

首先加载frm模板文件

Report report = new Report();
//获取项目目录
string baseDir = System.Windows.Forms.Application.StartupPath;
//拼接模板文件目录
var reportFile = Path.Combine(baseDir + @"\data\Report", "ExportPDF.frx");
//先清理一下
report.Clear();
//然后加载模板文件
report.Load(reportFile);

对模板中的TextObject进行赋值

foreach (Control ctl in this.panelControl1.Controls)
{
string[] strs = ctl.Name.Split('_');
if (strs.Length > 1)
{
string changeText = null;
if (strs[1].Equals("Date"))
{
//日期处理
DateEdit dateEdit = ctl as DateEdit;
DateTime date = (DateTime)dateEdit.EditValue;
changeText = date.ToLongDateString().ToString();
}else if (strs[1].Equals("Time"))
{
//时间处理
TimeEdit dateEdit = ctl as TimeEdit;
DateTime time = (DateTime)dateEdit.EditValue;
changeText = time.ToLongTimeString().ToString();
}
else
{
changeText = ctl.Text;
}
//找到 Name属性为T的控件
var t = report.FindObject("Text_" + strs[1]) as TextObject;
if (t != null)
{
//修改控件值
t.Text = changeText;
}
}
}

对模板中的图片控件PictureObject进行设置照片源

var graph = report.FindObject("Picture2") as PictureObject;
//获取图像
System.Drawing.Image image = MainViewContent.mainViewContent.zedGraphControl1.GetImage();
//照片旋转90度
image.RotateFlip(RotateFlipType.Rotate90FlipNone);
graph.Image = image;

绑定并显示预览窗口

//绑定预览控件 不然会弹出新的窗口
report.Preview = this.previewControl1;
//显示预览窗口
report.Prepare();
report.ShowPrepared();

显示另存为窗口

//显示另存为窗口
SaveFileDialog saveDialog = new SaveFileDialog();
//设置默认文件扩展名。
saveDialog.DefaultExt = "pdf";
//设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
saveDialog.Filter = "pdf文件|*.pdf";
//设置文件名
saveDialog.FileName = fileName;
//用默认的所有者运行通用对话框。
saveDialog.ShowDialog();
//如果修改了文件名,用对话框中的文件名名重新赋值
fileName = saveDialog.FileName;
//被点了取消
if (fileName.IndexOf(":") < 0) return;
FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport();
report.Export(export, fileName);
//即保存后打开Excel
System.Diagnostics.Process.Start(fileName);