0

我正在尝试在 Windows 上进行一些基于文本的打印。我的程序利用 Windows 的“ notepad /p file.txt”功能在默认打印机上打印文本文件。

问题是您不能说要以Landscape而不是Portrait打印。同样,无法打印到另一台打印机。

关于这方面的一些背景信息:我正在打印一个 Tcl/Tk 程序(请参阅The Tcl'ers wiki on text printing)。我可以使用 GDI 进行打印,但由于某种原因这太慢了,我想提供文本打印作为一种快速的替代方案,因为已经可以打印到文本文件。

4

3 回答 3

1

你可以试试这个免费软件程序。它是有益的。

http://home.swipnet.se/~w-62144/prfile/descr.htm

要为某些文本打开打印机对话框,请执行以下操作

set fd [open "|PrFile32.exe /-"]
set str "This is my long peice of text I want to write out to..."
puts $fd $str 
flush $fd

如果您不能使用可执行文件,请使用 printui.dll。您必须枚举机器上的打印机,然后传递您希望使用的打印机字符串

下面将显示特定打印机的打印首选项对话框

 rundll32.exe printui.dll,PrintUIEntry /e /u /n "Adobe PDF"

然后你可以打电话

 notepad.exe /p filename.txt

我认为免费软件路线要容易得多,因为您不需要发现默认打印机、询问用户并以非标准方式打印文件。

编辑我忘了添加 rundll32.exe 部分来调出打印机首选项

于 2009-06-10T21:42:26.073 回答
0

搜索谷歌后,似乎没有其他用于记事本的命令行选项。此外,该print命令似乎没有采用横向打印的替代选项。我曾希望

notepad /p

不同于

notepad /P

(大写的“P”)但显然不是,所以看起来你不走运。我能想出的唯一建议是看看是否有办法从命令行设置打印默认值,然后再将它们切换回来。我不知道这是否可能。

编辑 1:可能有帮助的东西:http ://www.robvanderwoude.com/2kprintcontrol.php 。

编辑2:看起来这不会控制打印首选项,只是打印机本身,所以你必须找到另一种方法。

于 2009-06-10T19:26:00.170 回答
0

可以帮助你的东西:

http://torisugari.googlepages.com/commandlineprint2

允许命令行打印的 Firefox 扩展。它似乎不支持传递方向参数,但我想可以添加对它的支持。

编辑 我只是重新阅读了扩展页面:它使用用户配置文件的默认首选项,因此如果您将其设置为默认横向打印,则扩展应该尊重该设置。

当然,这个选项会强制你的用户同时安装 Firefox 和这个扩展。可能不是最好的选择...

于 2009-06-10T19:27:00.713 回答