在未安装MS Office的情况下从Asp.net c#打印Word文档

在未安装MS Office的情况下从Asp.net c#打印Word文档,c#,asp.net,ms-word,C#,Asp.net,Ms Word,我需要在不安装MS Office的情况下打印Word文档。 我正在使用WordprocessingDocument操作Word文件 现在我需要把它打印出来 我试过: System.Diagnostics.Process printProcess = new System.Diagnostics.Process(); printProcess.StartInfo.FileName = "D:/testWordPad1.docx"; printProcess.StartInfo.Verb = "Pr

我需要在不安装MS Office的情况下打印Word文档。 我正在使用WordprocessingDocument操作Word文件

现在我需要把它打印出来

我试过:

System.Diagnostics.Process printProcess = new System.Diagnostics.Process();
printProcess.StartInfo.FileName = "D:/testWordPad1.docx";
printProcess.StartInfo.Verb = "Print";
printProcess.StartInfo.CreateNoWindow = true;
printProcess.Start();
printProcess.WaitForExit();
它在安装了MS Office的本地系统中工作但它在未安装MS office的服务器上不工作。

它告诉我:

没有应用程序与此操作的指定文件关联-位于System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo-startInfo)


请给出您的建议。

为了打印文本文件[这似乎是您试图做的],您可以使用记事本的命令行参数[阅读更多]

以下操作将文档发送到默认打印机:

System.Diagnostics.Process printProcess = new System.Diagnostics.Process();
                printProcess.StartInfo.FileName = "notepad.exe";
                printProcess.StartInfo.Parameters = "/P D:\\testWordPad1.txt";
                printProcess.StartInfo.CreateNoWindow = true;
                printProcess.Start();
                printProcess.WaitForExit();
如果要定义文件将发送到的打印机,请使用以下参数:


/PT[filename][printername][driverdl][port]

错误意味着动词不可用。 首先,您可以检查以下可用动词:

    foreach (String verb in printProcess.StartInfo.Verbs)
    {
        System.Diagnostics.Debug.WriteLine(verb);
    }
您确定您的服务器上有可用的打印设备吗?
如果在服务器上右键单击该文件,上下文菜单中是否显示“打印”?

要在未安装MS Office的web服务器上打印.docx文件,第三方库可能是最佳选择。我尝试了(nuget软件包),为小项目提供了100篇文章和5张表格,效果很好

using System;
using System.Collections.Generic;
using System.Text;
using Spire.Doc;
using System.Windows.Forms;
using System.Drawing.Printing;


namespace Doc_Print
{
    class Program
    {
        static void Main(string[] args)
        {

            Document doc = new Document(); 
            doc.LoadFromFile("sample.doc");
            PrintDialog dialog = new PrintDialog();
            dialog.AllowPrintToFile = true; 
            dialog.AllowCurrentPage = true;
            dialog.AllowSomePages = true;
            dialog.UseEXDialog = true; 
            doc.PrintDialog = dialog;               
            PrintDocument printDoc = doc.PrintDocument; 
            printDoc.Print();
            if (dialog.ShowDialog() == DialogResult.OK)
            {               
                printDoc.Print();
            }            

        }
    }
}

根据您的示例,您传递了一个文本文件作为进程名[在您的服务器上,它可能调用'notepad'应用程序]。是否确实要打印word文档?
.txt
扩展名与Microsoft word无关。例如,记事本应该可以打印。对不起,这是我的打印错误。实际上,我在这里的代码中使用的是.docx文件。为了在web服务器上可靠地使用office文档,您必须使用Aspose或类似产品。您是否正在尝试从网站向客户端打印机发送文档?这些标签表明您正在通过网站执行打印作业。感谢Nissim,它适用于.txt文件。但这是我的印刷错误。实际上,在我的代码中是.docx文件。好吧,docx文件基本上是开放的xml格式。您可以将文件扩展名更改为“.zip”,以从文件中提取图形和文本信息。你。请参考我在这里的回答:谢谢Bgl86,我在这个循环中得到“Print”作为动词。我的服务器有记事本,但没有MS Office。我不确定此问题是否是由于未安装MS Office造成的。当在printProcess上达到控制时,我收到此错误。开始()我在windows应用程序上尝试此操作,结果效果良好,@现在我需要asp.net web应用程序的相同功能,可以吗???