使用Windows图片和传真查看器(shimgvw.dll)从命令行打印jpgs时,如何选择布局?

时间:2010-02-12 16:09:52

标签: printing windows-xp batch-file

我正在使用Windows批处理文件和Windows图片和传真查看器的命令行界面自动打印jpg文件。我在.bat中使用的命令是:

rundll32.exe C:\Windows\System32\shimgvw.dll,ImageView_PrintTo /pt "%fullpath_to_jpg%" "%printer_name%"

我的照片打印机执行4x6打印。如果jpg文件正好是4x6宽高比,一切正常,我得到一个全出血4x6打印。如果没有,我会得到一个我不想要的白色边框。在Windows资源管理器中,我可以右键单击非4x6 jpg并选择打印以调用照片打印向导,选择“全页照片打印”并裁剪,以便为我提供我想要的全出血4x6打印。

如何从命令行指定“全页照片打印”布局选项,告诉shimgvw.dll“裁剪并旋转以适合”而不是“居中并旋转以适合”?是否有注册表设置选择此作为默认布局而不是“整页传真打印?我应该使用photowiz.dll而不是shimgvw.dll吗?

我找不到这些dll的命令行参数或注册表设置的参考。

1 个答案:

答案 0 :(得分:3)

坏消息:即使使用VBS,也无法做到这一点。我提取了所有的字符串并在网上进行了重要的搜索,以便控制这个.dll的所有方法,并且只存在两个基本的:

rundll32 shimgvw.dll,ImageView_Fullscreen c:\temp\grub.jpg

将grub.jpg打印到屏幕上

rundll32 shimgvw.dll,ImageView_PrintToW /pt c:\temp\grub.jpg "Microsoft XPS Document Writer"

将打印grub.jpg到MS Office XPS打印机,虽然这个和PDF打印机将要求您选择文件名,因此无法以这种方式自动化

可能使用内置方法自动打印到XP的唯一方法是使用SendKeys,但这是一个可怕的解决方案,因为用户输入的任何意外击键都会使输出与输出不同你要。当然,你总是可以开始隐藏在VBS中的过程,但这不是一个理想的解决方案。