在未安装MS Office的情况下从Asp.net c#打印Word文档
我需要在不安装MS Office的情况下打印Word文档。 我正在使用WordprocessingDocument操作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
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应用程序的相同功能,可以吗???