execCommand(“Print”, false, IDon'tUnderstandThisArgument)

邮差的信 提交于 2019-12-11 05:26:16

问题


What I'm trying to do is get this to print in landscape mode without showing the dialog box. This is what I have so far:

((mshtml.IHTMLDocument2)Browser.Document.DomDocument).execCommand("Print", true, 0);

I know that the instruction to print in landscape mode needs to be sent through the third argument, but I don't know how to construct the third argument to do this. Can anyone give me some help on how to make this last argument accomplish my goal?


回答1:


ADDITIONS: This is from Microsoft http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.defaultpagesettings%28v=vs.71%29.aspx

public void Printing()
{
   try
   {
      streamToPrint = new StreamReader (filePath);
      try
      {
         printFont = new Font("Arial", 10);
         PrintDocument pd = new PrintDocument(); 
         pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
         pd.PrinterSettings.PrinterName = printer;
         // Set the page orientation to landscape.
         pd.DefaultPageSettings.Landscape = true;
         pd.Print();
      } 
      finally
      {
         streamToPrint.Close() ;
      }
   } 
   catch(Exception ex)
   { 
      MessageBox.Show(ex.Message);
   }
}

So you would probably just replace pd in the example above with your document.


ORIGINAL ANSWER: Possibly integrate:

DefaultPageSettings.Landscape = true;

So maybe something like this:

((mshtml.IHTMLDocument2)Browser.Document.DomDocument).DefaultPageSettings.Landscape = true;
((mshtml.IHTMLDocument2)Browser.Document.DomDocument).execCommand("Print", true, 0);

Taking a little bit of a stab in the dark since C# is a weak spot but I believe this is how I once did it from an C# application.




回答2:


I mostly stick to desktop apps and I don't know how to do what you want. But I did take a quick look at the msdn documentation, and it seems the "Print" command (IDM_EXECPRINT) may not be what you're looking for? According to the documentation for the method, the second parameter should be false if you do not want to display a user interface. That sounds fine except that it looks like the IDM_EXECPRINT command always displays a dialog regardless ("User interface: Yes. Set parameter to true or omit").

msdn documentation: IHTMLDocument2::execCommand Method, IDM_EXECPRINT

Someone please correct me if I'm wrong, but I think you may want to look for another command.

Edit: You might have better luck with the IDM_PRINT command from mshtmcid.h, the dialog is optional for this command. Here's a sample application (in C++): http://msdn.microsoft.com/en-us/library/bb250434(VS.85).aspx



来源:https://stackoverflow.com/questions/4974996/execcommandprint-false-idontunderstandthisargument

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!