各位好!
现在我要做的是 将web页面打印.每次不同的页面可能要设置不同的纸张大小.目前页面设置是依靠对话框来设置.我是想通过程序自动更改打印机的默认纸张大小.1.我使用的是webbrowser的方式获取网页.我采用了addform的方式增加了自定义纸张.试图使用setform的方式设置打印机的默认设置. 但是不起作用.打印机的默认
纸张.2.使用修改printer的 papersize,组合 printer.print 等命令,可以做到将文本按指定尺寸打印.但是我不知道怎样使用printer方式打印web页面.

解决方案 »

  1.   

    说简单也简单,说复杂也复杂
    简单的情况就是有固定良好的环境抓图。
    然后就把网页以图的方式输出给打印机对象来打印。
    复杂的话也是抓图,要搞得好也不容易。
    至于Printer对象的使用MSDN有很详细的说明,我认为最麻烦的还是抓图。
      

  2.   

    谢谢supermanking关注及提出了很好的建议。关于我的问题,我再补充一些细节:我要打印的页面包含很多个frame。每个frame的框架尺寸是固定的。我打印网页最终还是要转为pdf格式的(只是将打印定向到了pdf打印机而已)。
      

  3.   

    我认为你没有把问题说清楚。
    打印网页其实主要分两个部分:
    1、抓图
    2、打印
    你到底问题卡在哪?
    如果问题出在抓图:技术可以有甚多种,根据环境的不同和要求不同有不同的处理方法,
    对有些需求而言可能还涉及到很深很底层的技术及应用。
    对于打印而言,Printer对象是很好用的。如果要求更多,也可以看看API或相关的打印命令。
    如果你不把问题说具体点,别人很难答的。
      

  4.   

    嗯,问题卡在打印。
    我原来没有考虑抓图.听了您的建议后,我又查了一下关于图片转pdf的资料,道理比较深奥,对于我来说,感觉更难控制。我昨天又查找了很多资料,目前,基本上解决了更改打印机默认纸张的问题。方式是通过api: setprinter来修改打印机的devmode结构,从而可以通过程序灵活的设置打印纸张的大小,布局(纵向,横向)。
      

  5.   

    我对网页的打印是这样的:webbrowser1.navigate URL  '导航到要打印的页面
    在documentcomplete 事件中,开始打印:WebBrowser1.ExecWB 6, 2
    这样,就会将该页面送到打印机中进行打印。我当时遇到的问题是,不想手工去页面设置中更改纸张规格,想通过程序去修改纸张规格,但确苦于找不到通过程序设置纸张规格的办法。
      

  6.   


    可以通过修改打印机的默认设置。(通过代码更改printer_info信息) 但是,在webbrowser实例环境中,即使更改了打印机的默认设置,
    当前环境中的打印设置也不会改变。只能从新初始化一趟webbrowser。
      

  7.   

    感谢 zpf_cn的回答。
    情况确实是这样的。
      

  8.   

    我新发现,情况是这样的:如果在注册表里添加一项,IE就可以总是使用默认打印机打印。
    微软有这样一篇技术支持文档:“如果更改打印机 InternetExplorer 不使用默认系统打印机”http://support.microsoft.com/kb/330628/zh-cn
      

  9.   

    如何通过代码更改printer_info信息 ?