开元周游
德国频道
查看: 1630|回复: 11
打印 上一主题 下一主题

c# 打印带stylesheet的xml 和pdf, 悬赏100 euro, 立等兑现。

 关闭 [复制链接]
1#
发表于 13.10.2006 16:02:32 | 只看该作者
即时机票
c# 打印带stylesheet的xml 和pdf, 悬赏100 euro, 立等兑现。close日期, 10月17号

pdf 目前的问题是可以打印, 打印后AcroRd32.exe进程残留, 如何杀死进程。 可以打开一个adobe文件, 打印后, 会看到AcroRd32.exe进程残留在process 里, 如何打印后制动杀死进程。 
 
xml是带stylesheet的 找不到 命令。

要的代码如下

Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Verb = Verb_Printto;
startInfo.FileName = this.fileName;
p.StartInfo = startInfo;
p.StartInfo.UseShellExecute = true;
p.StartInfo.CreateNoWindow=true;
p.Start();
回复 支持 反对

使用道具 举报

2#
发表于 13.10.2006 16:27:37 | 只看该作者
可以试试

p.Start();
p.WaitForExit();
p.Close();
回复 支持 反对

使用道具 举报

3#
发表于 13.10.2006 16:59:23 | 只看该作者
1。你可以用static newprocess ,(sigleton的模式),保证只有一个Process保存,随时kill 该process.
2. 通常由编程启动,创建的Process, 都可以立刻获得它的id(), 保存该id, 可以在需要的时候通过 getprocessbyid,取回该process, 并且Kill()

3. 至于xml是带stylesheet的? 没有理解你的意思,是想直接输出到打印机,还是想打印生成为pdf文件? 如果想直接输出到打印机,你必须自己写程序,规定输出格式,如果是想输出为pdf文件,可以用开源nfop, 生成pdf文件。这当然需要考虑GNU liezenz 的问题。
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 13.10.2006 18:32:06 | 只看该作者
QUOTE(远走高飞 @ 13.10.2006, 16:27 )
可以试试

p.Start();
p.WaitForExit();
p.Close();
[right][snapback]1131598[/snapback][/right]


这个不行, 当打印机列队的时候, 来不及打印就推出了
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 13.10.2006 18:37:43 | 只看该作者
QUOTE(jackywu @ 13.10.2006, 16:59 )
1。你可以用static newprocess ,(sigleton的模式),保证只有一个Process保存,随时kill 该process.
2. 通常由编程启动,创建的Process, 都可以立刻获得它的id(), 保存该id, 可以在需要的时候通过 getprocessbyid,取回该process, 并且Kill()

3. 至于xml是带stylesheet的? 没有理解你的意思,是想直接输出到打印机,还是想打印生成为pdf文件? 如果想直接输出到打印机,你必须自己写程序,规定输出格式,如果是想输出为pdf文件,可以用开源nfop, 生成pdf文件。这当然需要考虑GNU liezenz 的问题。
[right][snapback]1131622[/snapback][/right]


xml直接输出到打印机, 输出格式就是xml, 不要其他格式, 必须是带stylesheet 的xml,

正在尝试你的process kill
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 13.10.2006 18:49:51 | 只看该作者
QUOTE(jackywu @ 13.10.2006, 16:59 )
1。你可以用static newprocess ,(sigleton的模式),保证只有一个Process保存,随时kill 该process.
2. 通常由编程启动,创建的Process, 都可以立刻获得它的id(), 保存该id, 可以在需要的时候通过 getprocessbyid,取回该process, 并且Kill()

3. 至于xml是带stylesheet的? 没有理解你的意思,是想直接输出到打印机,还是想打印生成为pdf文件? 如果想直接输出到打印机,你必须自己写程序,规定输出格式,如果是想输出为pdf文件,可以用开源nfop, 生成pdf文件。这当然需要考虑GNU liezenz 的问题。
[right][snapback]1131622[/snapback][/right]


kill 是强迫杀, 这样不professional。 要安全杀。 

[REM _DDE_Minimize]
[FileOpen("%1")]
[t=IsDocumentDirty()]
[FilePrint 0]
[SetDocumentDirty t]
[DocClose]

是我想要的, 既打开, 打印, 关掉
回复 支持 反对

使用道具 举报

7#
发表于 13.10.2006 19:21:17 | 只看该作者
kill 是强迫中止进程,对没有方法获得界面得程序只能这样,如果有得话,可以先用 process.closemainwindow() 尝试关闭,可以设立timeout,或者其他条件,如果不成功就只能kill了。可以参照msdn,还是很详细得。

xml要是直接输出到打印机得话,因为xml本身是元数据,你要是直接输入,就是得到一行行字符了,要是带Stylesheet,比如xls, 只是对元数据进行加工,提取,处理,本身与打印无关,要想输入你想要得格式,还是得自己写程序,规定打印格式。

不知道这里理解对不对,欢迎交流。
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 13.10.2006 20:02:51 | 只看该作者
QUOTE(jackywu @ 13.10.2006, 19:21 )
kill 是强迫中止进程,对没有方法获得界面得程序只能这样,如果有得话,可以先用 process.closemainwindow() 尝试关闭,可以设立timeout,或者其他条件,如果不成功就只能kill了。可以参照msdn,还是很详细得。

xml要是直接输出到打印机得话,因为xml本身是元数据,你要是直接输入,就是得到一行行字符了,要是带Stylesheet,比如xls, 只是对元数据进行加工,提取,处理,本身与打印无关,要想输入你想要得格式,还是得自己写程序,规定打印格式。

不知道这里理解对不对,欢迎交流。
[right][snapback]1131765[/snapback][/right]


p.start可以看到Adobe界面,但是如何知道打印结束, 可以设 timeout, 但是设置多久打印结束, 如果简单的设 200, 是不是不太专业。

我们尽量用DDE, 而不是自己写程序。 没办法, lösung Beschreibung 已经写了, 用DDE. 欢迎继续交流
回复 支持 反对

使用道具 举报

9#
发表于 13.10.2006 21:55:30 | 只看该作者
怎么知道打印结束,到从来没有考虑过,也比较难控制吧,有时候遇到通道阻塞,无法预计阿。 不清楚

关于上面xml输入,可以在xls中设置打印纸张,已经比如输出字符串得长度,起始文字等打印信息,相当于自定义类型,不过好像要在打印机得设置里面添加该自定义纸张,不然有时候打不出来。
DDE系统知道得不多。
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 13.10.2006 22:24:35 | 只看该作者
QUOTE(jackywu @ 13.10.2006, 21:55 )
怎么知道打印结束,到从来没有考虑过,也比较难控制吧,有时候遇到通道阻塞,无法预计阿。 不清楚

关于上面xml输入,可以在xls中设置打印纸张,已经比如输出字符串得长度,起始文字等打印信息,相当于自定义类型,不过好像要在打印机得设置里面添加该自定义纸张,不然有时候打不出来。
DDE系统知道得不多。
[right][snapback]1132071[/snapback][/right]


xsl 是客户的输入, 是不可以改动的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点信息

站点统计| 举报| Archiver| 手机版| 小黑屋

Powered by Discuz! X3.2 © 2001-2014 Comsenz Inc.

GMT+1, 16.11.2024 15:47

关于我们|Apps

() 开元网

快速回复 返回顶部 返回列表