是否可以自动执行以下操作: 引用MS Word Viewer以编程方式打开文档然后打印它? C#理想情况下
我猜是否有可能打开它,然后更有可能打印它。
我尝试在Visual Studio中添加对COM对象的引用.MS Office 11/12对象库但未列出MS Word库?有什么想法吗?
我没有安装Office 200x
欢呼声
答案 0 :(得分:5)
我们使用Word Interop程序集完成了它。这需要安装Word(在场景后面启动一个WINWORD进程),并且interop允许您在代码中与它进行交互。
据我所知,这是唯一的方法。
答案 1 :(得分:3)
尝试Aspose.Words,它旨在允许Office自动化,而不依赖于安装Word。它提供了一个很好的API来打开文档,然后执行一系列操作,如打印,导出到pdf和许多其他结果。
答案 2 :(得分:2)
以下代码将打开Word视图,其中包含您传递给它的文件。
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("WORDVIEW.exe", fileName.ToString());
System.Diagnostics.Process.Start(info);
尝试乱搞参数以及传递命令行打印(我不知道你是否可以)。
是的,在耗尽每条大道之后,我无法找到使用Microsoft Viewer的Interop,这非常令人沮丧。
答案 3 :(得分:2)
也许是这样的:
class Program
{
static void Main(string[] args)
{
PrintDocument(@"C:\test.docx", 2);
Console.ReadKey();
}
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
private static void PrintDocument(string name, int copies)
{
var process = System.Diagnostics.Process.Start(new ProcessStartInfo
{
FileName = name,
UseShellExecute = true
});
process.WaitForInputIdle();
SetForegroundWindow(process.MainWindowHandle);
SendKeys.SendWait("^p"); // send CTRL+P
SendKeys.SendWait(copies.ToString()); // send number of copies
SendKeys.SendWait("~"); // send ENTER
// -- or send all in one
//SendKeys.SendWait(string.Format("^p{0}~", copies));
}
}
答案 4 :(得分:1)
是指免费的Microsoft Word Viewer,它允许您在没有安装Word的情况下查看Word文档?如果是这样,我不相信有一种方法可以自动化查看器,因为它不会安装Word COM自动化库,这是您需要的。
答案 5 :(得分:1)
这是如何使用文字自动化服务
如果在服务器上运行,使用Interop程序集总是一个坏主意 Word Automation Services
使用不是每个人都拥有的SharePoint。您还可以通过WebRequestMethod
将文件传送到网页,然后将页面打印到可爱的pdf编写器或其他驱动程序。只需使用mime类型发送文件的字节。您将在asp.net网页的页面加载中打印。