簡體   English   中英

未安裝MS Office的情況下從Asp.net c#打印Word文檔

[英]Print Word document from Asp.net c# Without MS Office Installed

我需要在不安裝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 [文件名] [打印機名] [driverdll] [端口]

錯誤表示動詞不可用。 首先,您可以檢查可用的動詞,如下所示:

    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();
            }            

        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM