3

我有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);
4

2 回答 2

1

您需要创建一个打印模板并提供您自己的DEVMODE,并针对特定的打印机、纸张尺寸和方向进行配置。这很棘手,但可行,请使用Marc Durdin 这篇出色的博客文章中的信息。您还可以在我对您首先看到的有关纸张方向的相关问题的回答中找到有关打印模板的更多信息。

于 2013-10-04T03:44:42.577 回答
0

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

一个小程序是jZebra,我没有使用它,但你可以在jZebra 教程中找到一些信息

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

于 2013-09-30T15:18:34.890 回答