分页打印

js javascript js控制分页打印,打印分页 Html代码   %@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="UTF-8"%>  >  HTML>  HEAD>  TITLE>javascript打印-打印页面设置-打印预览代码TITLE>   META http-equiv=Content-Type content 阅读详情
在Windows应用程序开发过程中,实现文档打印功能是每一个开发人员都不得不面对的问题。在使用Visual C++6.0这一开发工具的情况下,虽然它的AppWizard生成的应用程序框架中缺省地包括打印功能,但是如何具体实现打印功能的确是一件非常繁杂的事情,尤其是要实现文档的分页打印,更是一个让很多初学者感到困惑的问题。笔者结合自己学习体会,谈一谈如何实现文档的分页打印功能,希望可以对广大读者朋友们起到一定的帮助。

  一、MFC程序默认的打印流程

  Visual C++6.0的应用程序向导(AppWizard)生成的应用程序具备了实现打印功能的基本框架,当用户从菜单中选择Print命令时,应用程序就用ID_FILE_PRINT命令消息调用程序视图类的缺省处理函数OnFilePrint()来开始打印过程,并创建用语打印的设备环境,来满足应用程序特定的需要。其中要重载应用程序视图类的几个相应函数,其函数表如图一所示:

函数说明
OnBeginPrinting()重载此函数来创建在打印文档时所需的资源,如字体等。在此也可以设置最大页数。
OnDraw()该函数提供三重服务,在框架窗口、预览窗口和打印机上显示数据,具体在哪里显示,依赖于作为函数参数传递的设备环境。
OnEndPrinting()重载此函数用来释放在OnBeginPrinting()中创建的资源。
OnPrepareDC()重载此函数来修改用于显示或打印文档的设备环境,可以在此处理换页。
OnPreparePrinting()提供打印文档的最大页数,如果在此不设置页数,必须在OnBeiginPrinting()中设置。
OnPrint()提供附加打印服务,如在Cview::OnDraw()函数中不提供的打印页眉、页脚。
               表一、实现打印功能需要重载的几个CView类成员函数

  OnFilePrint()函数一开始就调用OnPreparePrinting()函数,该函数缺省时则调用DoPreparePrinting()函数来显示打印对话框,创建的OnPreparePrinting()程序如下:

BOOL CmyView::OnpreparePrinting(CprintInfo *pInfo)
{
 //default preparetion
 return DoPreparePrinting(pInfo);
}

  程序中,OnPreparePrinting()提供一个指向CprintInfo对象的指针参数,使用此对象,应用程序能够获取关于打印作业的信息,同时对属性(例如最大页数)进行初始化。DoPreparePrinting()显示对话框时,由用户设置CprintInfo类的许多数据成员变量供应用程序使用或再设置,即用于创建整个打印的设备环境。

  打印过程都要用到CprintInfo结构,它里面保存了打印任务的信息。OnPreparePrinting()重载是为了指明打印文件的长度。在调用Cview::DoPreparePrinting()之前,可用其参数来修改CprintInfo结构。重载OnPreparePrinting()还可以使用CprintInfo结构的成员函数SetMaxPage()、SetMinPage()来设置文档的最大、最小页数。当把CprintInfo结构中表明文档是否被直接打印标志变量m_bDirect设置为TRUE时,调用DoPreparePrinting()就不再显示打印对话框。此时,由于没有打印对话框,可以用SetToPage()和SetFromPage()设置打印的起始页。

  接下来,打印程序调用视图类的OnBegingPrinting()函数,该函数进一步进行初始化工作,并传送一个指向设备环境的指针和一个指向CprintInfo结构的指针。

  在开始逐页打印之前,调用OnPrepareDC()函数,这是每一页执行一次的打印循环的开始,该函数的修改用于显示或打印文档的设备环境,为每页设置映像模式,创建字体,检查文档是否结束。可以把CPrintInfo结构中的m_bContinuePrinting标志设置为False来发出打印完毕信号以终止打印作业。

  在调用了OnPrepareDC()函数之后,ID_FILE_PRINT消息处理函数调用了OnPrint()函数,该函数的缺省功能是把打印工作放在视图类的OnDraw()函数中进行,它传送一个指向设备环境的指针和一个指向CprintInfo结构的指针,负责每一页的打印。

  归纳起来,MFC应用程序的打印流程如下:


图一、打印流程图

  二、文档分页打印功能的实现

  为了说明如何实现文档的分页打印功能,下面给出了分页打印输出几个矩形的实例。首先启动Visual C++6.0生成一个应用程序框架,并重载视图类的OnBeginPrinting()函数,在该函数中获取设备环境信息,设置页高、页数,由此设置打印对话框的初值,具体代码如下:

Void CmyView::OnBeginPrinting(CDC*pdc,CprintInfo *pInfo)
{
 CmyDoc *pDoc=GetDocment();//得到文档指针;
 ASSERT_VALID(pDoc);//确认指针的有效性;
 int pageHeitht=pDC->GetDeviceCaps(VERTRES);//由页顶到页底可打印点的个数,从设备环境中得到页面高度;
 int logPixelsy=pDC->GetDeviceCaps(LOGPEXELSY);//每英寸的点数;
 int rectHeight=(int)(4.2*logPixelsy);//计算矩形的高度,可以由用户自行设置;
 int numPages=Pdoc->m_numRects*rectHeight/pageHeight+1;//由矩形数计算输出页数;
 pInfo->SetMaxPage(numPages);//初始化pInfo结构;
}

  为了将矩形打印输出,还应该重载Cview::OnPrepareDC()函数,实现输出图形的位置定位,函数首先测试应用程序是否正在调用CDC类的成员函数IsPrinting()打印数据,若正在打印,则判断当前页的数据属于哪一部分,由GetDeviceCaps()函数得当环境设备信息;接着确定打印新视图的原点,并将原点值由SetViewportOrg()传递给设备环境。具体代码如下:

Void CmyView::OnPrepareDC(CDC*pDC,CprintInfo *pInfo)
{
 if(pDC->IsPrinting())//若正在进行打印则判断当前页数据;
 {
  int pageHeight=pDC->GetDeviceCaps(VERTRES);
  int originY=pageHeight*((pInfo->m_nCurpage-1);
  pDC->SetViewportOrg(0,-originY)
 }
 Cview::OnPrepareDC(pDC,pInfo);
}

  三、小结

  通过上文的介绍,相信读者朋友应该对Visual C++编程实现文档的分页打印功能有了一定的了解,大家可以在此基础上,参考相关学习资料,根据应用程序的不同需要,编制实现不同的打印程序
css之分页打印 很久没写文章了,最近做了一个员工入职的项目,该系统有一个批量打印个人信息的功能需求。因为之前也没接触过打印这方面的功能,就上网查了下,发现jquery有个打印功能的API(PrintArea),关于这个api大家有兴趣的可以自行查看相关知识,在此我就不详细介绍了。当时我就采取了使用这个api去实现打印功能,当我用了这个api去实现实现功能时,发现确实可以调用浏览器的打印功能,不过打印的内容却是空白 阅读详情

相关推荐

Excel分页打印整合技巧:轻松实现一页打印

Excel分页打印整合是一项非常实用的技能,可以帮助用户更好地控制打印输出效果,提高报告或展示的专业度。通过掌握本文介绍的操作步骤和注意事项,用户可以轻松实现分页打印整合,让打印输出更加清晰、连贯。无论是在日常办公中还是在重要报告中,这一技能都将为用户带来极大的便利和优势。希望本文能够对您有所帮助!

nntxthml的博客 1499

MFC打印机制

总结了一下其中的一些用法: 1:用CPrintDialog 可以呼出窗口让用户选择打印机或者采用默认的打印机直接打印。     StartPage…..EndPage  完成一页文档的打印。  如需改变DC设置,需要调用ReSetDC()     多次调用这两个函数,可以实现打印多页 2:TextOut坐标的确定。      TextOut中的坐标是DC中的逻辑坐标。      和实际

锄禾日当午 2523

分页打印软件破解版

一张纸顶2张、4张、8张纸用。一面纸可以打印4面内容等。

MFC项目有关打印功能(支持分页打印)

如下代码运行的环境简述: MFC的对话框界面上创建一个按钮,点击这个按钮打印界面上CListCtrl控件上现实的内容。 如果这段代码对你有帮助,请点个赞,给我一点小小鼓励,共同进步~~ void CMaxValueDlg::OnBnClickedButton4() { //选定默认打印机 CString strPrintDevice; TCHAR szBuffer[1024] = { 0 }; DWORD length = 1024; int ret = ::GetDefaultPrinter(s

lucky_zbaby的博客 1871

VC++实现分页打印源代码

内容索引:VC/C++源码,报表打印,打印,分页  VC++实现分页打印源代码,自动调用打印机及相关参数,实现的比较简单,基本上实现了分页,有兴趣的请下载。

Arthas实战(3)- CPU使用率高问题排查

Arthas实战(3)- CPU使用率高问题排查

java_liuyuan的博客 1731

MFC---分页技术

分页技术是指父窗口中包含多个子窗口页面,我们通过点击上一页、下一页来进行页面的切换。 1、新建一个对话框应用程序:“对话框分页”,并且新建3个对话框作为3个页面,设置3个对话框的属性:child、无边框 等。三个对话框的ID分别为:IDD_P1、IDD_P2、IDD_P3 2、将3个新建的对话框分别关联3个类:CPage1、CPage2、CPage3 3、头文件包含、新建三个类对象: #p

小米的修行之路 2919

双目相机测距原理

普通双目相机具有如下特点:左右两个相机位于同一平面(光轴平行),且相机参数(焦距f)一致。其原理图如下:如图所示,P点为相应的物体位置,CL和CR为左右相机光心位置,PL和PR分别为左相机和右相机拍摄的P点成像结果。f为相机焦距,Z为物体距相机的深度距离,b为左右相机基线距离根据几何关系有:则相应的深度信息计算公式为:(1)其中XL-XR为视差。其余在两侧的情况同样可以用几何关系分析得到该表达式(1),即对于普通双目相机测距可以直接通过公式(1)得到深度结果。

doudou2weiwei的博客 4542

【GDI+编程--打印篇(三)】--分页打印

有段时间没有更新文章了,最近一段时间一直没有时间去写点东西,因为在项目后期,很多地方需要修改,导致了时间的浪费。现在回头想想,大部分时间并不是浪费到了实现功能上,而是后期调试。通过三篇的GDI+打印的讲解,相信大家能够根据这三篇文章在不依靠第三方工具的情况下,自己动手写代码来设计打印报表。

航帆远洋 5205

5-->详解《switch 数据接收驱动框架、mtk7621集成交换芯片mt7530》之一

SWITCH 交换芯片驱动配置: 一、 配置 MDIO 总线 二、配置 MAC 接口 三、基于 MAC 的 DMA 配置 四、设备驱动结构体 五、数据收发包

weixin_38387929的博客 1万+

Starlink第三代终端与第二代终端的差异分析

SpaceX星链第三代终端实现显著升级,硬件售价维持599美元不变但性能全面提升。相比第二代产品,第三代终端取消自动调节电机改为手动定向,防水防尘等级提升至IP67,天线面积扩大46%,支持235台设备连接(提升87%),下载速度可达1Gbps(提升4倍),延迟降至20ms以下。新增3个千兆接口和WiFi6支持,同时推出199美元单独路由器选项。这些改进使第三代终端在保持价格优势的同时,更好地满足户外、移动和商业场景需求,标志着SpaceX卫星互联网服务从亏损销售转向盈利模式的重要转折。

通信行业老兵、物联网从业者,做一个有趣的普通人。 3030

vue 打印(分页打印)

最近项目中碰到一个需求,需要前端预览打印当前页面的内容,但是在打印的时候需要分页打印,想了很多办法,最后解决,在这做一个分享。 首先是打印,网上有很多方法,这里面我用的是一个插件 vue-print-nb --save,使用起来比较方便(缺点是不兼容IE,所以考虑兼容IE浏览器的小伙伴慎用)。 1.安装,直接通过npm安装 npm install vue-print-nb --save...

我不是安徒生的博客 2万+

避坑指南:PyTorch ConvLSTM参数配置的那些坑(hidden_dim/kernel_size/num_layers详解)

本文深度解析PyTorch ConvLSTM中hidden_dim、kernel_size和num_layers三大核心参数的配置技巧,提供实战指南和性能优化建议。通过实验数据揭示参数组合的内在规律,帮助开发者避免常见配置陷阱,提升时空序列建模效果。特别针对视频预测、气象预报等应用场景,给出黄金参数组合方案和调试技巧。

vv45678的博客 702

JS实现分页打印

使用网上的打印插件会有一些无法分页和样式丢失的问题,本文章记录使用window.print()实现打印,需要加入css控制打印内容显示。 分页 打印强制分页,父节点不能有overflow:hidden属性,打印分页模块使用display:inline-block; <div style="page-break-before:always;"></div> 实现 首先需要...

三岁打酱油的博客 3066

昆仑通态,自由串口通讯

软件默认无该功能,需要问客服索要扩展包。

cfqq1989的博客 1536

基于STM32设计的4G远程视频侦查小车(图传+远程控制+EMQX+MQTT)(204)

当前设计了一款基于STM32F103ZET6主控芯片和废旧Android手机改造的4G侦查小车。该设计充分利用已有的智能手机硬件资源,实现摄像头画面的实时采集与上传,以及远程控制功能。这样的设计不仅降低了成本,而且充分利用了废旧手机中高性能的硬件资源,如摄像头、4G通信模块和电池等,实现了资源的有效循环利用。

2528

html网页怎么分页打印,web如何实现页面分页打印

实现页面分页打印是很多小伙伴们都想知道的,那么你知道web如何实现页面分页打印的具体方法吗?下面就让爱站小编带领大家一起去学习学习吧,希望本文对你有所帮助。1.首先引入一个WebBrowser在需要打印的页面,可以直接添加:???到页面,或者使用JavaScript在需要的时候临时添加也可以:???document.body.insertAdjacentHTML("beforeEnd","clas...

weixin_42510962的博客 4201

基于 YOLOv26 的陶瓷产品缺陷检测系统:智能视觉质检方案

本文提出了一种基于YOLOv26深度学习模型的陶瓷产品智能缺陷检测系统。该系统针对陶瓷生产中的裂纹、气泡、釉面缺陷等8类常见质量问题,采用YOLOv26目标检测算法实现高精度自动化检测。系统架构包含数据采集、预处理、YOLOv26检测和后处理四个模块,具有多类别分类、实时推理和强鲁棒性等技术优势。文章详细介绍了数据预处理与增强方法,并提供了Python代码实现示例。该方案可显著提升陶瓷产品质量检测效率,替代传统人工检测方式,为陶瓷制造业提供智能化质检解决方案。

一键难忘的博客 788

html中js控制分页,js控制分页打印、打印分页示例

pageEncoding="UTF-8"%>javascript打印-打印页面设置-打印预览代码.Noprint{display:none;}.PageNext{page-break-after: always;}function printsetup(){// 打印页面设置wb.execwb(8,1);}function printpreview(){// 打印页面预览wb.execwb(...

weixin_36098128的博客 1022

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jqprint 分页打印_web 页面分页打印的实现

1.首先引入一个WebBrowser在需要打印的页面,可以直接添加:到页面,或者使用JavaScript在需要的时候临时添加也可以:document.body.insertAdjacentHTML("beforeEnd","classid=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\">");2 .页面设置和打印预览如下所示,直接调用即可docu...

weixin_39717443的博客 221

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

php分页打印,css之分页打印

这次给大家带来css之分页打印,css之分页打印的注意事项有哪些,下面就是实战案例,一起来看一下。很久没写文章了,最近做了一个员工入职的项目,该系统有一个批量打印个人信息的功能需求。因为之前也没接触过打印这方面的功能,就上网查了下,发现jquery有个打印功能的 API(PrintArea) ,关于这个api大家有兴趣的可以自行查看相关知识,在此我就不详细介绍了。当时我就采取了使用这个api去实现...

weixin_32019329的博客 273

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

html 分页打印页码,js控制分页打印、打印分页示例

pageEncoding="UTF-8"%>javascript打印-打印页面设置-打印预览代码.Noprint{display:none;}.PageNext{page-break-after: always;}function printsetup(){// 打印页面设置wb.execwb(8,1);}function printpreview(){// 打印页面预览wb.execwb(...

weixin_33505417的博客 1163

html打印表格自动分页,Web分页打印 细线表格+分页打印之终极攻略

Web分页打印 细线表格+分页打印之终极攻略发布时间:2009-03-01 23:46:40 作者:佚名 我要评论最近给客户做打印的时候,客户提出打印时不要打印该页面的头,只是打印表格里面的内容,因为头部有背景和打印按钮,而最近给客户做打印的时候,客户提出打印时不要打印该页面的头,只是打印表格里面的内容,因为头部有背景和打印按钮,而且要细线表格的那种,我想细线表格不是很简单吗如果你还不知...

weixin_31975689的博客 714

计算机如何分页打印,Microsoft Project怎么打印 分页打印设置方法

Microsoft Project 制作完成流程图后,就可以进行打印了,大多数项目进度计划图篇幅较大,一张纸根本打印不完整,或者打印后字体太小,这时候就需要设置分页打印,下面就跟小编来看看具体步骤吧。首先我们登陆Microsoft Office Project软件,双击后即可打开Project项目管理软件。点击新建空白项目,并设定好文件名进行保存,稍等片刻,即可看到一个空白项目已经创建完成了,如果...

weixin_28900461的博客 2568

关于js的打印分页

 调用ie自带打印功能的时候只需要插入 style="page-break-before:always;"的样式就可以实现分页。 但是当给多表格分页的时候就会出现一些异常,比如:111122223333111122223333111122223333这样实现打印的时候 居然有的时候第二个表格会紧接着第一个表格显示,而不是另起一页显

PlayWorld2的专栏 1506
上一篇: AStyle在配置VC中的配置方法
下一篇: DLL中传递STL参数,vector对象作为dll参数传递等问题
htt9931
博客等级 码龄24年 43粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值