如何在C#中打印word文档

时间:2013-12-27 15:10:59

标签: c# winforms user-interface

我正在使用以下代码。当我从记事本打印时,它会打印出来。但是当我从MS Word打印时,它打印出来的时候没有包含符号的单词。我想我必须在代码中输入doc格式。我怎么能这样做?

String content="";
   private void btnUpload_Click(object sender, EventArgs e)
    {
        string fileName;
        // Show the dialog and get result.
        OpenFileDialog ofd = new OpenFileDialog();
        DialogResult result = openFileDialog1.ShowDialog();
        if (result == DialogResult.OK) // Test result.
        {
            fileName = ofd.FileName;

            var application = new Microsoft.Office.Interop.Word.Application();
            //var document = application.Documents.Open(@"D:\ICT.docx");
             //read all text into content
            content=System.IO.File.ReadAllText(fileName);
            //var document = application.Documents.Open(@fileName);
        }
    }
 private void btnPrint_Click(object sender, EventArgs e)
    {
        PrintDialog printDlg = new PrintDialog();
        PrintDocument printDoc = new PrintDocument();
        printDoc.DocumentName = "fileName";
        printDlg.Document = printDoc;
        printDlg.AllowSelection = true;
        printDlg.AllowSomePages = true;
        //Call ShowDialog
        if (printDlg.ShowDialog() == DialogResult.OK)
        {
             printDoc.PrintPage += new PrintPageEventHandler(pd_PrintPage);            
             printDoc.Print(); 
        }
    }
 private void pd_PrintPage(object sender, PrintPageEventArgs ev)
 {
   ev.Graphics.DrawString(content,printFont , Brushes.Black,
                   ev.MarginBounds.Left, 0, new StringFormat());
 }

1 个答案:

答案 0 :(得分:2)

据我所知,没有基本功能支持读取字格式和/或使用.net中的默认打印功能进行打印。

如果您只是想在没有任何进一步信息的情况下打印文档,可以使用Start methodProcess使用 PrintTo 动词来启动基本的Windows打印过程

秒。 MSDN论坛Print Word Document in c# 链接帖子的示例:

using (PrintDialog pd = new PrintDialog())
{
pd.ShowDialog();
ProcessStartInfo info = new ProcessStartInfo(@"D:\documents\filetoprint.doc");
info.Verb = "PrintTo";
info.Arguments = pd.PrinterSettings.PrinterName;
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(info);
}

如果您需要做更多(布局,其他数据......),您可以编写自己的doc / docx解析器或使用类似aspose工具的东西

秒。 http://www.aspose.com/.net/word-component.aspx

也许infragistics / devexpress也可能是阅读word文档,将它们转换为HTML或者支持直接打印这个词的组件。

对于所有工具,试用版应该是可用的

http://www.infragistics.com

https://www.devexpress.com/