此代码有效,因为文档已成功打印到默认打印机。
public static void OpenMSWord()
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "WINWORD.EXE";
startInfo.Arguments = "/q /n";
startInfo.Verb = "Print";
startInfo.FileName = "C:\\Test Page.docx";
Process.Start(startInfo);
}
问题: info.Arguments根本就没有拿起它们。 “/ q”应该停止启动画面。我已经使用
单独测试了这个 public static void OpenMSWord()
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "WINWORD.EXE";
startInfo.Arguments = "/q /n";
Process.Start(startInfo);
}
这会处理参数。 正如预期的那样,“/ q”会在加载过程中停止小小的winword弹出窗口。
我正在使用.Net 4.0框架。 这是作为控制台应用程序完成的。
这里有什么简单的东西吗?
提前感谢您对此提出的任何帮助或建议。
答案 0 :(得分:1)
您应该将文件名包含在参数中。
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "WINWORD.EXE";
startInfo.Arguments = "/q /n C:\\Test Page.docx";
startInfo.Verb = "Print";
Process.Start(startInfo);
您正在使用要打开的文档覆盖可执行文件名称。 Process.Start
与文档一起使用是因为docx文件和winword之间存在文件关联,但会忽略Arguments
。
答案 1 :(得分:0)
public static void printThread(object fiObject)
{
FileInfo fi = (FileInfo)fiObject;
try
{
Microsoft.Office.Interop.Word.Application wordInstance = new Microsoft.Office.Interop.Word.Application();
//MemoryStream documentStream = getDocStream();
FileInfo wordFile = new FileInfo(fi.FullName);
object fileObject = wordFile.FullName;
object oMissing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document doc = wordInstance.Documents.Open(ref fileObject, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
doc.Activate();
doc.PrintOut(oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
Console.WriteLine("Printed " + fi.FullName);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex);
}
}
其中fiObject是文档路径。 fi.FullName可以用文件位置字符串替换。
经过大量的在线搜索后,我发现上面提供了我想要的东西。这是Microsoft Word无法打开,文档被发送到打印机。
该代码基于此博客。相信这个家伙。 http://wurstkoffer.wordpress.com/2013/05/18/c-printing-to-word-programmatically-in-3-way/ 方法#3就是我所遵循的。
编辑1 ** doc.PrintOut()中的第一个参数是“背景”,这是Micrsoft网站描述的 “确实可以在Microsoft Office Word打印文档时继续自定义代码。” 换句话说,PrintOut方法将停止代码执行,直到文档被发送到打印机。会出现一个小弹出窗口。如果您有一个打印多个文档的循环,以便给他们时间来处理,这一点非常重要。