2013-09-30 27 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 –