【Silverlight5矢量打印】如何用C#代码检测打印机和驱动是否支持PostScript

Silverlight5支持PostScript矢量打印,矢量打印相比于位图打印速度更快,生成的打印文件更小。SL5默认会采用PS矢量打印,如果打印机不支持,自动切换到位图打印。

虽然微软SL打印组认为PS已经相当普遍,但我想大多数打印机估计并未安装支持PostScript的驱动。HP打印机默认的会是PCL的,估计微软选用PS是学Flash:)

如何用代码检测打印机是否支持PostScript呢?代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Runtime.InteropServices;namespace PrinterSupportPS
{class Program{static void Main(string[] args){string printerName = "Microsoft XPS Document Writer";Console.WriteLine(PrinterSupportsPostScript(printerName));Console.Read();}static Int32 GETTECHNOLOGY = 20;static Int32 QUERYESCSUPPORT = 8;static Int32 POSTSCRIPT_PASSTHROUGH = 4115;static Int32 ENCAPSULATED_POSTSCRIPT = 4116;static Int32 POSTSCRIPT_IDENTIFY = 4117;static Int32 POSTSCRIPT_INJECTION = 4118;static Int32 POSTSCRIPT_DATA = 37;static Int32 POSTSCRIPT_IGNORE = 38;[DllImport("gdi32.dll")]static extern int ExtEscape(IntPtr hdc, int nEscape, int cbInput,IntPtr lpszInData, int cbOutput, IntPtr lpszOutData);[DllImport("gdi32.dll")]static extern IntPtr CreateDC(string lpszDriver, string lpszDevice,IntPtr lpszOutput, IntPtr lpInitData);[DllImport("gdi32.dll")]static extern bool DeleteDC(IntPtr hdc);static bool PrinterSupportsPostScript(string printername){ArrayList PSChecks = new ArrayList();PSChecks.Add(POSTSCRIPT_PASSTHROUGH);PSChecks.Add(ENCAPSULATED_POSTSCRIPT);PSChecks.Add(POSTSCRIPT_IDENTIFY);PSChecks.Add(POSTSCRIPT_INJECTION);PSChecks.Add(POSTSCRIPT_DATA);PSChecks.Add(POSTSCRIPT_IGNORE);IntPtr hDC = IntPtr.Zero; ;IntPtr BLOB = IntPtr.Zero;try{hDC = CreateDC(null, printername, IntPtr.Zero, IntPtr.Zero);int isz = 4;BLOB = Marshal.AllocCoTaskMem(isz);Marshal.WriteInt32(BLOB, GETTECHNOLOGY);int test = ExtEscape(hDC, QUERYESCSUPPORT, 4, BLOB, 0, IntPtr.Zero);if (test == 0) return false; // printer driver does not support GETTECHNOLOGY Checks.foreach (Int32 val in PSChecks){Marshal.WriteInt32(BLOB, val);test = ExtEscape(hDC, QUERYESCSUPPORT, isz, BLOB, 0, IntPtr.Zero);if (test != 0) return true; // if any of the checks pass, return true
                }}catch (Exception ex) { Console.WriteLine(ex); }finally{if (hDC != IntPtr.Zero) DeleteDC(hDC);if (BLOB != IntPtr.Zero) Marshal.Release(BLOB);};return false;}}
}

大家可以建一个控制台程序,用这段代码检测一下。

转载于:https://www.cnblogs.com/slmk/archive/2012/08/26/2657230.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用魔法打开科学,孩子惊叫连连,想不爱科学都难!

随着当今科技快速发展,和大家对于人工智能快速崛起的担忧,父母们对于孩子科学能力的培养,已经紧锣密鼓的提上了早教日程。看看近两年早教市场里火爆的课程,“少儿编程”、“儿童机器人教育”、“儿童STEAM课程”等等便是印证了这一…

java反射 获取局部变量_Java反射:如何获取变量的名称?

呼唤远方如果您使用以下的调试信息进行编译:javac -g),局部变量的名称保存在.class文件中。例如,以这个简单的类为例:class TestLocalVarNames {public String aMethod(int arg) {String local1 "a string";StringBuil…

svn服务端及客户端搭建和使用(三)

接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等.添加文件在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态,如图:这时候,你需要告知TortoiseSVN你的操作,如图:加入以后,你的文件会变成这个状态,如图:这时…

Python的小宇宙,怎么样才能发挥出来?

随着科技的发展,计算机对人类的生产活动和社会活动产生了极为重要的影响,同时以强大的生命力飞速发展着。目前计算机正广泛用于社会各个领域,并朝着微型化、网络化、智能化和巨型化的方向前进。而随着计算机飞速发展的背后,人工智…

面试腾讯,过了~

大概需要10分钟。原谅下,又标题党了,不过这篇会提到我应届面试腾讯的经历。前两天在朋友圈发了一条动态:要做读者朋友的指路小火苗,很多人在状态下留言:为啥不是指路明灯?为啥不是小油灯?原因很…

传说中理科生看到会沉默、文科生看到会流泪的【程序员文史综合题目】

全世界只有3.14 % 的人关注了数据与算法之美一、单选题1、以下谁是二进制思想的最早提出者?a,伏羲;b,姬昌;c,莱布尼茨;d,柏拉图。2、以下哪个概念和公孙龙的《指物论》中的“指”字含…

智能制造建设方案

随着新一轮工业革命的发展,工业转型的呼声日渐高涨。面对信息技术和工业技术的革新浪潮,美国人出台了先进制造业回流计划,提出了工业互联网战略,德国人提出了工业4.0战略,中国加紧推进两化深度融合,并发布了…

深入LINQ | 动态构建LINQ表达式

原文:bit.ly/3fwlKQJ作者:Jeremy Likness译者:精致码农-王亮LINQ 是 Language Integrated Query(语言集成查询)的缩写,是我最喜欢的 .NET 和 C# 技术之一。使用 LINQ,开发者可以直接在强类型代码…

java查找字符的方法_Java字符串查找(3种方法)

在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符。根据字符查找String 类的 indexOf() 方法和 lastlndexOf() 方法用于在字符串中获取匹…

2018 Kaggle 报告:在技术领域,女性从业者持续减少,00后开始展露头脚

全世界只有3.14 % 的人关注了数据与算法之美就在上个月,Kaggle社区发布了《2018 Kaggle机器学习和数据科学调研》,调研结果显示:在技术领域,女性从业者持续减少;00后开始登上从业舞台;而且,23%受…

Nuget Package 支持打包 ReadMe 了

Nuget Package 支持打包 ReadMe 了Intro在 3月份,我们在NuGet生态系统状态上发布了一个博客,其中讨论了过去六个月以来从数百名客户那里获得的见解。客户在我们的调查中发现的最大问题之一是,“大多数软件包的文档不足”,可以从Nu…

幸运从来都只偏爱有准备的人——大龄码农的慌张日记

很多人将一件事的成功归结于能力,也有很多人将其归结为运气。今天要在这里跟大家分享的朋友名叫Leon,他在纽村政府注重本地人就业的大环境下,用时1个月以配偶工签的身份成功拿到大厂offer。接到我们的邀稿后,他花了很多心思写了这…

程序员必备表情包,速速收藏!

全世界只有3.14 % 的人关注了数据与算法之美程序猿怒产品 :程序猿不想和你说话,并… 被吐槽写BUG时怎么办 产品又来提需求 产品又要改需求,怎么办 产品说,这个功能三天后就要 日常怼产品 日常工作内心咆哮 来源:网络版…

深度解读服务治理 ServiceMesh、xDS

最近在同程艺龙蹲坑,聊一聊微服务治理的核心难点、历史演进、最新实现。☺️以上内容属自我思考,如理解有偏差、理解不透彻、现状梳理不清楚的请大家多指教。大纲微服务治理的核心难点方案演进的法宝:代理模式2.1 集中式代理2.2 客户端嵌入Sd…

struts2 kindeditor teatarea拿不到值问题。

2019独角兽企业重金招聘Python工程师标准>>> 源&#xff1a; <script type"text/javascript">var editor;KindEditor.ready(function(K) {editor K.create(textarea[name"userinfo.introduce"], {resizeType : 1,allowPreviewEmoticons …

三个字帮大家总结一下刘强东事件

全世界只有3.14 % 的人关注了数据与算法之美真干了【别和我说话】“工作战衣”的预售活动正在火热进行中&#xff0c;数量有限&#xff0c;欲购从速&#xff01;购买者还将会有机会免费获超级数学建模的第一本书&#xff08;附超模君亲笔签名&#xff0c;只限20名哦&#xff09…

【思维导图】新手该怎么学习C#/WPF

C#和WPF没有什么多大的关系&#xff0c;WPF是一个框架&#xff0c;VB都可以写WPF&#xff0c;至于如何学习C#&#xff0c;还是老样子&#xff01;基础&#xff1a;基础语法基础API基础练习所谓基础语法&#xff0c;包括if /if else &#xff0c;swicth&#xff0c;while&#x…

程序员搞笑故事:给女儿织的辫子 ​​​​,你知道是什么算法吗?

全世界只有3.14 % 的人关注了数据与算法之美1、程序员给女儿织的辫子 &#xff0c;你知道是什么算法吗&#xff1f;推荐阅读《啊哈&#xff01;算法》2、一个姑娘在我女友面前声讨她的男友&#xff0c;女友帮腔说&#xff1a;学土木工程的嘛&#xff0c;肯定又土又木。姑娘问&a…

模块XX.dll已加载,但对DllRegisterServer的调用失败

为什么80%的码农都做不了架构师&#xff1f;>>> 模块"XX.dll"已加载&#xff0c;但对DllRegisterServer的调用失败&#xff0c;错误代码为0x80004005 一句话&#xff0c;权限问题…… 转载于:https://my.oschina.net/szm/blog/76544

爱卡创誓记java刷钱_【178创誓记】快速升级:40到50级只需要两天的黄金刷

本文由178论坛会员&#xff1a;东东呛 转载&#xff0c;如果你是原作者请联系我们&#xff0c;我们会对原创作者给予奖励。(当然您也可以在评论回复表达看法&#xff0c;但是论坛会有更丰富的奖励哦。)朵朵快满级了~~~由于内测只开到50级~~~可还剩下一堆任务~所以刷怪刷到49级半…