2013-09-30 21 views
3

我有HTML文档作为从SSRS检索到的字节[],我想以横向表示形式打印C5纸张格式。我使用IE进行打印,但我不知道如何告诉他以横向C5模式打印文档。建议?.net在横向表示中打印HTML文档

var envelope = proxy.Render(
        Format, DevInfo, out extension, out mimeType, out encoding, out warnings, out streamIDs); 

       using (FileStream fStream = File.Create(string.Format(@"printtmp\envelope_{0}.html", i))) 
       { 
        fStream.Write(envelope, 0, envelope.Length); 
       } 
       var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format(@"printtmp\envelope_{0}.html", i)); 

       var ie = new InternetExplorer(); 
       ie.PrintTemplateTeardown += disp => 
        { 
         File.Delete(path); 
         ie.Quit(); 
        }; 
       ie.DocumentComplete += (object disp, ref object url) => 
       { 
        ie.ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, Type.Missing, Type.Missing); 
       }; 

       ie.Navigate(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

回答

1

您需要创建一个打印模板并提供您自己的DEVMODE,配置为特定的打印机,纸张尺寸和方向。这是棘手的,但可以,使用从this excellent blog post by Marc Durdin的信息。您还可以在我的answer到您的相关question找到关于纸张方向的打印模板的更多信息,我首先看到了它。

0

据我知道你不能设置或修改浏览器(客户端)的场所服务器端,对于那种互动的,你应该尝试一个ActiveX,Java或Silverlight的解决方案。对于

一个applet是jZebra,我还没有使用它,但你可以找到在jZebra Tutorial

另一项建议是,你展示一个弹出有关“如何改变纸张尺寸的指示一些信息,并在打印之前使其成为默认“。

+0

但我如何更改IE打印(C5,横向)的默认设置? –

+0

也许jZebra会提供某种API,如果不是我认为不可能的,出于安全原因,Web浏览器不能访问这种配置。在您的情况下,配置应该在PC上手动完成,并设置为默认值,或者可能搜索/开发浏览器插件或扩展 – Carlos487

+0

'WebBrowser' - 这是一个赢取窗体控件:)请参阅http://msdn.microsoft.com /en-us/library/system.windows.forms.webbrowser.aspx –