C#实现导出pdf文件,打印

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BusinessFacade;
using System.IO;
using Common.Table;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine; public partial class Pages_ReportFile_BhXjspf_XjspfCheckList : PageBase
{
ReportDocument myReportDoc = new ReportDocument();
private void SetParameterValue(string strColumn, string strValue)
{
myReportDoc.SetParameterValue(strColumn, strValue);
}
protected void Page_Load(object sender, EventArgs e)
{ if (!Page.IsPostBack)
{
string strResult0 = "";
string strResult1 = "";
string strResult2 = ""; string strBuildArea = string.Empty; string strHouseCount = string.Empty;
string strPerBuild = string.Empty;
string strPage = string.Empty;
string strCount = string.Empty; this.CheckPageParameter();
string strError = string.Empty;
PrintSystem mySystem = new PrintSystem(base.UserSessionID);
DataSet myData = new DataSet();
myData = mySystem.mothed(this.GetSessionParameterValue("FILE_ID"), out strError);
if (!string.IsNullOrEmpty(strError))
{
webTools.InsertAlert(this.Page, webTools.FilterInvalidString(strError));
webTools.closewin(this.Page);
return;
}
myData.Tables[LY_ZG_XJSPF_TABLE.LY_ZG_XJSPF_TABLENAME].Columns.Add("QRCODE", typeof(System.Byte[]));
myData.Tables[LY_ZG_XJSPF_TABLE.LY_ZG_XJSPF_TABLENAME].Rows[]["QRCODE"] = ProductQR(myData); myData.AcceptChanges();
if (!string.IsNullOrEmpty(myData.Tables[].Rows[]["GZ_RESULT"].ToString()))
{
switch (myData.Tables[].Rows[]["GZ_RESULT"].ToString())
{
case "":
strResult0 = "√";
strResult1 = "×";
strResult2 = "×";
break;
case "":
strResult1 = "√";
strResult0 = "×";
strResult2 = "×";
break;
case "":
strResult2 = "√";
strResult0 = "×";
strResult1 = "×";
break;
}
}
for (int i = ; i < myData.Tables[LY_FAMILYHOUSEINFORMATION_TABLE.LY_FAMILYHOUSEINFORMATION_TABLENAME].Rows.Count; i++)
{
strHouseCount = myData.Tables[].Rows[i]["HouseCount"].ToString();
if (!string.IsNullOrEmpty(myData.Tables[].Rows[i]["SumIDENTIFIEDAREA"].ToString()))
{
strPerBuild = Convert.ToString(Math.Round((Convert.ToDouble(myData.Tables[].Rows[i]["SumIDENTIFIEDAREA"].ToString()) / Convert.ToDouble(myData.Tables[].Rows[]["PersonCount"].ToString())), ));
strBuildArea = myData.Tables[].Rows[i]["SumIDENTIFIEDAREA"].ToString();
} }
for (int i = ; i < myData.Tables[LY_H_RECEIVE_TABLE.LY_H_RECEIVE_TABLENAME].Rows.Count; i++)
{
strCount = myData.Tables[].Rows[i]["counts"].ToString();
strPage = myData.Tables[].Rows[i]["pages"].ToString();
}
myReportDoc.Load(Server.MapPath(@"rptxjspfChecklist.rpt"));
myReportDoc.SetDataSource(myData);//这里必须先设置数据源,然后再设置参数,否则报‘找不到参数’的错误
myReportDoc.SetParameterValue("Result0", strResult0);
myReportDoc.SetParameterValue("Result1", strResult1);
myReportDoc.SetParameterValue("Result2", strResult2); myReportDoc.SetParameterValue("BuildArea", strBuildArea); myReportDoc.SetParameterValue("HouseCount", strHouseCount);
myReportDoc.SetParameterValue("PerBuild", strPerBuild);
myReportDoc.SetParameterValue("page", strPage);
myReportDoc.SetParameterValue("count", strCount); try
{
DiskFileDestinationOptions myDestinationFile = new DiskFileDestinationOptions();
string filename = "";
filename = System.DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".pdf";
Stream stream = myReportDoc.ExportToStream(ExportFormatType.PortableDocFormat);
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, , bytes.Length); stream.Close(); String contentType = "application/octet-stream"; Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = false;
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.AddHeader("Content-Length", bytes.Length.ToString());
Response.Charset = "GB2312";
Response.ContentType = contentType;
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
catch (System.Exception exp)
{
throw exp;
}
}
}
private byte[] ProductQR(DataSet myData)
{
DataTable mytable = myData.Tables[];
string strFILE_ID = mytable.Rows[][LY_ZG_XJSPF_TABLE.FILE_ID_FIELD].ToString().Trim();
string strRegister_num = mytable.Rows[][LY_ZG_XJSPF_TABLE.REGISTER_NUM_FIELD].ToString().Trim(); #region 设置QR码
string strCode = strRegister_num + "\r\n";//"审核表编号:" +
strCode += strFILE_ID + "\r\n";//"收件号:" +
QRCode.Service1 QrCode = new QRCode.Service1();
return QrCode.GetQrCode(strCode);
#endregion
}
private void Page_UnLoad(object sender, System.EventArgs e)
{
if (myReportDoc != null)
{
myReportDoc.Close();
myReportDoc.Dispose();
}
}
}
1.注意rpt中的数据库专家中的xsd文件的类名必须和访问数据库返回的表名必须相同,否则会报登录数据库失败的错误
见了他,她变得很低很低,低到尘埃里。但她心里是欢喜的,从尘埃里开出花来。魂牵梦绕,辗转反侧,可越是这样执着的爱,越是让我束手无策,无法表达,成就一段烽火佳话,迎接她包含深情炙热的眼光吧

C#实现打印的更多相关文章

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

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

  2. C#中5步完成word文档打印的方法

    在日常工作中,我们可能常常需要打印各种文件资料,比如word文档.对于编程员,应用程序中文档的打印是一项非常重要的功能,也一直是一个非常复杂的工作.特别是提到Web打印,这的确会很棘手.一般如果要想选 ...

  3. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  4. Ajax使用WCF实现小票pos机打印源码

    通过ajax跨域方式调用WCF服务,实现小票pos机的打印,源码提供web方式,客户端方式测试,服务驻留右侧底部任务栏,可控制服务开启暂停,用户可自定义小票打印模板,配合零售录入. qq  22945 ...

  5. Jqprint实现页面打印

    好些项目需要实现页面打印,特别是一些后台管理类系统,下面介绍一款轻量级的打印插件: 1.实现页面打印要引入jQuery和Jqprint.点击下载Jqprint插件 <script languag ...

  6. Android连接网络打印机进行打印

    首先这是网络打印工具类,通过Socket实现,多说一句,网络打印机端口号一般默认的是9100 package com.Ieasy.Tool; import android.annotation.Sup ...

  7. 打印Lua的Table对象

    小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...

  8. 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计

    ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...

  9. jQuery:实现网页的打印功能

    实现的打印功能大致跟浏览器的 Ctrl+P 效果一样 一.直接上代码 <!DOCTYPE html> <head> <meta charset="utf-8&q ...

  10. C# 设置Excel打印选项及打印excel文档

    C# 设置Excel打印选项及打印excel文档 打印Excel文档是一个很常见的操作,但有时候我们会碰到各种不同的打印需求,例如只打印一个Excel工作表的其中一部分,或打印时每页都有表头,或把工作 ...

随机推荐

  1. Java复习之Eclipse快捷键大全

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...

  2. Protocol Buffers序列化原理

    1. 使用Varint编码数据,越小的数据,用少的字节编码.如小于128的用一个字节编码,大于128的用多个字节编码.同时,每个字节最高为1或者0表示是否为数字的一部分. 2. 由于负数的补码表示很大 ...

  3. 卸载Gac里被windows installer所reference的assembly的方法

    HKEY_LOCAL_MACHINE\Software\Classes\Installer\Assemlies\Global下找到要删除的assembly的那一项, 删除. 然后再gacutil /u ...

  4. matlab练习程序(随机粒子切换特效)

    视频制作软件中一般都会有相邻帧切换的特效,我过去用过vagas好像就有很多切换特效. 我想这个也算是其中一种吧,虽然我不确定实际中到底有没有这种切换. 实际上我只是下班后太无聊了,写着玩的,没什么高深 ...

  5. SQL获取本周,上周,本月,上月的开始时间和结束时间

    ),),--本周 ),),--上周 ),),--本月 ),),--上月 ),),--近半年 ),)--近一年 ), ,, ),)--本周开始时间 ), ,, ),)--本周结束时间 ),,, ),)- ...

  6. thinkphp5设置403 404等http状态页面

    在thinkphp5中如何抛出异常状态码(比如401,403,404等),因为这些能极大的给用户以良好的体验. 因为在上线阶段,任何的系统错误信息都不能让浏览用户给看到,比如404(Not Found ...

  7. 开源监控zabbix的搭建

    yum-nginx-php-mysql 1.依赖安装 1.依赖 yum -y install pcre* openssl* 2.php rpm -Uvh https://mirror.webtatic ...

  8. oozie fork join结点

    oozie可以用fork和join节点进行多任务并行处理,同时fork和join也是同时出现,缺一不可. 语法: <workflow-app name="[WF-DEF-NAME]&q ...

  9. 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)

    http://blog.csdn.net/hjf19790118/article/details/6919265 1.什么是面向对象编程(Object-Oriented Programming)? 面 ...

  10. 更改win7关机菜单选项功能

    说明:如果你不希望别人对你的电脑进行注销切换等操,那么可以使用如下的方法 实现效果:          实现步骤: 效果1 1>切换用户: 2>注销:(需重启资源管理器生效) 效果2: