none
c# 调用word、wps里的printOut方法实现文档的打印功能时,如何让“打印进程”里的“正在打印文件”显示成文档的真实名字呢? RRS feed

  • 问题

  • c# 调用word、wps里的printOut方法实现文档的打印功能时,如何让“打印进程”里的“正在打印文件”显示成文档的真实名字呢?

    直接打开word打印时,“打印进程”里的“正在打印文件”显示的是文档的真实名字;

    但是用c#调用document对象的printOut方法打印时,“打印进程”里的“正在打印文件”显示的是“文档1”,怎么才能显示成文档的真实名字呢?


    田田qq:764574267

    2016年1月3日 15:34

全部回复

  • 你好,ttsoft888

    根据下面关于Document.PrintOut 法的介绍,其中有关于“OutputFileName”的设置,你可以尝试设置下。

    https://msdn.microsoft.com/en-us/library/office/ff837331.aspx

    另外,如果问题仍然为解决,你可以提供下相关的document PrintOut 的代码,我们可以帮你测试下并尝试找到相关问题点。

    Best Regards,

    Albert Zhang

    2016年1月4日 12:09
  • OutputFileName 这个参数是把打印的文档保存到硬盘的路径,并不是“打印进程”里的“正在打印文件”。

    //http://blog.csdn.net/tian19820412/article/details/2162407
                Microsoft.Office.Interop.Word.Application app = null;
                Microsoft.Office.Interop.Word.Document doc = null;
                object missing = System.Reflection.Missing.Value;
                //打印份数
                object Copies = 1;
                string filePath = System.Windows.Forms.Application.StartupPath + "\\t2.doc";

                object templateFile = filePath;
                //try
                //{
                    app = new Microsoft.Office.Interop.Word.ApplicationClass();
                    doc = app.Documents.Add(ref templateFile, ref missing, ref missing, ref missing);
                  
                    //-------------------------------a4
                    object PrintZoomPaperWidth = 11907;
                    object PrintZoomPaperHeight = 16839;
                   
                    //一张纸只打一页
                    object PrintZoomColumn = 0;
                    object PrintZoomRow = 0;

                    object Background = true;
                    object Range = WdPrintOutRange.wdPrintAllDocument;
                    object Item = WdPrintOutItem.wdPrintDocumentContent;
                    object Pages = "";
                    object PageType = WdPrintOutPages.wdPrintAllPages;

                    object PrintToFile = false;
                    object Collate = false;
                    object ManualDuplexPrint = false;

                    doc.PrintOut(ref Background, ref missing, ref Range, System.IO.Path.GetFileName(filePath),
                         ref missing, ref missing, ref Item, ref Copies, ref Pages,
                         ref PageType, ref PrintToFile, ref Collate, ref missing, ref ManualDuplexPrint,
                          ref PrintZoomColumn, ref PrintZoomRow, ref PrintZoomPaperWidth, ref PrintZoomPaperHeight);

                //}
                //catch (Exception exp)
                //{
                //    MessageBox.Show(exp.Message, this.Text);
                //}
                ////销毁word进程
                //finally
                //{
                //    object saveChange = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
                //    if (doc != null)
                //        doc.Close(ref saveChange, ref missing, ref missing);
                //    if (app != null)
                //        app.Quit(ref missing, ref missing, ref missing);
                //}

    //把这个参数 System.IO.Path.GetFileName(filePath)替换成带路径的文件名就不会报错了。这个参数是把打印的文档保存到硬盘的路径,并不是“打印进程”里的“正在打印文件”。


    田田qq:764574267

    2016年1月5日 1:28
  • 你好 ttsoft888,

    根据我目前的经验来看的,Document.PrintOut并没有更改打印进程的内容,如果你解决这个,可以分享给我们吗?可以给有相同需求的人一些帮助。谢谢!

    Best regards,

    Cole Wu

    2016年1月27日 6:50
    版主