打印方法中,用CreateFile写打印端口 PrintDocument 哪个好?

问题描述

如题,现市面上常用的两种打印方法:用CreateFile写打印端口PrintDocument哪个好?,请问这两种的利弊在哪,现感觉CreateFile写打印端口,有点不稳定,有时会不打印,需重启程序才行。

解决方案

解决方案二:
两者区别在哪,问下大家
解决方案三:
引用楼主HBJMSHOP的回复:

有时会不打印,需重启程序才行。

那是你的程序有bug,而你不解决bug。这二者根本不是同样的机制。就像是你自己种菜地然后收割之后炒菜吃,跟你到饭馆去点一盘蔬菜沙拉,随随便便问“哪个好”没有意义。
解决方案四:
粗略来说,两者的区别如下(下图打印系统的流程简单化,供参考理解用):PrintDocument->打印系统服务->具体的打印驱动->打印机CreateFile->打印机至于那个好,我一定说是PrintDocument好。因为它得到的打印系统的帮忙,程序员不用去关心一些底层细节。归根到底,打印数据总要传给打印机(那个红色箭头部分)。但是具体打印机的数据格式千差万别(比如有PCL,PJL,ESP/P,Text等等),而且具体的连接方式也有好多(LPT,COM,USB,TCP,SMB等等)。CreateFile:如果你要自己CreateFile传送数据,要首先把打印内容渲染为打印机理解的格式,然后要根据连接方式传送数据,等等这些任务都极其繁重。而且,一旦换打印机或更改连接方式,你就要更新代码。PrintDocument:打印服务系统,极大简化了该过程。你只要关心如何在统一的画布(GDI)上打印内容,其他任务系统都帮你完成。系统可以利用打印驱动来渲染打印任务,帮你传输数据,包括打印机忙碌重传机制等等。
解决方案五:
引用2楼sp1234的回复:

Quote: 引用楼主HBJMSHOP的回复:
有时会不打印,需重启程序才行。

那是你的程序有bug,而你不解决bug。这二者根本不是同样的机制。就像是你自己种菜地然后收割之后炒菜吃,跟你到饭馆去点一盘蔬菜沙拉,随随便便问“哪个好”没有意义。

谢谢!,!!
解决方案六:
引用3楼Forty2的回复:

粗略来说,两者的区别如下(下图打印系统的流程简单化,供参考理解用):PrintDocument->打印系统服务->具体的打印驱动->打印机CreateFile->打印机至于那个好,我一定说是PrintDocument好。因为它得到的打印系统的帮忙,程序员不用去关心一些底层细节。归根到底,打印数据总要传给打印机(那个红色箭头部分)。但是具体打印机的数据格式千差万别(比如有PCL,PJL,ESP/P,Text等等),而且具体的连接方式也有好多(LPT,COM,USB,TCP,SMB等等)。CreateFile:如果你要自己CreateFile传送数据,要首先把打印内容渲染为打印机理解的格式,然后要根据连接方式传送数据,等等这些任务都极其繁重。而且,一旦换打印机或更改连接方式,你就要更新代码。PrintDocument:打印服务系统,极大简化了该过程。你只要关心如何在统一的画布(GDI)上打印内容,其他任务系统都帮你完成。系统可以利用打印驱动来渲染打印任务,帮你传输数据,包括打印机忙碌重传机制等等。

!谢谢!

时间: 2024-08-22 15:08:49

打印方法中,用CreateFile写打印端口 PrintDocument 哪个好?的相关文章

巧用FileSystem组件实现WEB应用中的本地特定打印的方法_应用技巧

1.引言  随着Internet的飞速发展,许多企业都纷纷开发基于WEB的业务应用系统.一般情况下,基于WEB的业务应用都采用三层或三层以上的结构,前台即客户端是普通的WEB浏览器,中间业务逻辑应用层存放于WEB服务器上,由WEB服务器上的服务构件访问后台数据库.为了业务系统与Internet的互联,WEB服务器和数据库系统均托管在IDC(互联网数据中心),因而需要从托管在 IDC的服务器上提取业务数据在本地打印输出.在客户端浏览器只能打印简单的HTML页面的情况下,要求更为强大灵活的打印输出功

打印网页中定义的部分内容的实现方法

打印|网页 正常情况下的打印是使用 window.print(); 直接整页打印,但如果需要打印网页中定义的部分内容,则可使用如下的方法: 1.在页面的代码头部处加入JavaScript: <script language=javascript>function doPrint() { bdhtml=window.document.body.innerHTML; sprnstr="<!--startprint-->"; eprnstr="<!--

luaj lua调用java-lua中使用javaBridge调用java方法中的打印语句

问题描述 lua中使用javaBridge调用java方法中的打印语句 我用的是mac系统,ADT环境,最近在学习2dx游戏中植入百度SDK.luaj到底怎么用,有没有完整的代码.本人菜鸟,请大神指点 解决方案 不要总指望别人就给你现成的代码

急求,C#,打印程序中LPT1可以打印,而USB001无法打印。

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;usingSystem.Collections;usingSystem.Data;usingSystem.IO;usingSystem.Drawing;usingSystem.Drawing.Text;usingSystem.Windows.Forms;usingMicrosoft.Win32.

在Word中整理笔记页中的手写内容的方法

在Word中整理笔记页中的手写内容的方法   图1 OneNote中的手写内容 在OneNote 2007中,打开需要导入到Word中的笔记页,然后,执行菜单栏中的[文件]|[发送至]|[Microsoft Office Word]命令(如图2所示),即可将手写内容转换为标准的文本并发送到Word中,这样就可以对其进行相关排版.打印等操作了,如图3所示. 图2 执行菜单栏中的[文件]|[发送至]|[Microsoft Office Word]命令

js控制web打印(局部打印)方法整理

 首先定义css样式:   代码如下: @media print {  .noprint { display: none;color:green }  }    对于不想打印的内容只用在标签中加上 class=noprint即可,打印的时候客户也不会看到页面任何变化.  打印时调用 window.print();    另外几种js局部打印的方法:  移花接木:  打印的时候,把需要打印的内容替换成整个body内容(用户会在打印的时候看到变化,客户体验不太好)   代码如下: function

js控制web打印(局部打印)方法整理_javascript技巧

首先定义css样式: 复制代码 代码如下: @media print { .noprint { display: none;color:green } } 对于不想打印的内容只用在标签中加上 class=noprint即可,打印的时候客户也不会看到页面任何变化. 打印时调用 window.print(); 另外几种js局部打印的方法: 移花接木: 打印的时候,把需要打印的内容替换成整个body内容(用户会在打印的时候看到变化,客户体验不太好) 复制代码 代码如下: function previe

烂泥:域中的打印机无法打印……

今天刚上班就碰到这个问题了,一台加入域中的打印机执行打印任务时,没有任何的反应. 由于这个域是我自己在虚拟机中搭建的,目前还处于实验阶段,而且我的另外一个比我早来的同事,很反对域环境.他已经在公司三四年了,可以说真的是老员工了.他主要擅长网站的开发,管理与维护,以及数据库的管理.尽管公司目前有大约100个PC点,但是他既没有使用工作组模式,也没有使用域模式,全公司就是使用一个软件–飞秋,就完事了.平时公司内部的网络管理,就是通过一个防火墙来管理.而公司内部的网络结构混乱的很呢,各种工作组都有呢.

用XML+VBS在ASP中实现报表的打印

xml|打印 一.前言 ASP在电子商务上应用广泛,报表的处理又有一些麻烦.本文介绍了在ASP中利用 本人写的Report Server Page脚本解释器实现报表的显示.打印. 二.准备工作 (1)安装Visual Reprort Design软件 Visual Report Design是本人写的一个免费的报表设计器,程序的发行只需要 安装一个控件即可. 想要的网友可以到http://go.163.com/reportpro/ 下载 (2)设计报表 通过Visual Report Desig