.net以横向表示方式打印HTML文档

时间:2013-09-30 15:04:57

标签: c# html .net printing webbrowser-control

我有HTML个文件作为从SSRS检索的byte [],我希望以横向表示的C5纸张格式打印它。我使用IE进行打印,但我不知道如何告诉他以横向C5模式打印我的文档。建议?

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);

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

据我所知,您无法在服务器端设置或修改浏览器(客户端)属性,对于这种交互性,您应该尝试使用ActiveX,Java或Silverlight解决方案。

其中一个小程序是 jZebra ,我还没有使用它,但您可以在jZebra Tutorial

中找到一些信息

另一项建议是,在打印之前,您会显示一个弹出窗口,其中包含有关“如何更改纸张尺寸并将其设为默认值”的说明。