Extjs的打印解决方案

采用将数据传至后台,然后调用word模板打印。

打印参数:

*****************************************************************************************************

可以使用 PrintOut 方法将 Microsoft Office Word 文档(或文档的一部分)发送到打印机。可以从 Application 或 Document 对象调用 PrintOut()。

打印文档
下面的代码用所有默认选项打印活动文档: 
ThisDocument.PrintOut()
PrintOut 方法有多个可选参数,允许您微调打印文档的方式,下表概括了这些参数。

参数 说明 
Background 设置为 True 可允许在 Word 打印文档时继续处理。 
Append 与 OutputFileName 参数一起使用。设置为 True 可将指定的文档名称追加到由 OutputFileName 参数指定的文件名后。设置为 False 将重写 OutputFileName 的内容。 
Range 页面范围。可以为任何 WdPrintOutRange 枚举:wdPrintAllDocument、wdPrintCurrentPage、wdPrintFromTo、wdPrintRangeOfPages 或 wdPrintSelection。 
OutputFileName 如果 PrintToFile 为 True,此参数指定输出文件的路径和文件名。 
From Range 设置为 wdPrintFromTo 时的起始页码。 
To Range 设置为 wdPrintFromTo 时的结束页码。 
Item 要打印的项。可以是任何 WdPrintOutItem 枚举:wdPrintAutoTextEntries、wdPrintComments、wdPrintDocumentContent、wdPrintKeyAssignments、wdPrintProperties、wdPrintStyles。 
Copies 要打印的份数。 
Pages 要打印的页码和页码范围,由逗号分隔。例如,“2, 6-10”意为打印第 2 页和第 6、7、8、9、10 页。 
PageType 要打印的页面的类型。可以是任何 WdPrintOutPages 常量:wdPrintAllPages、wdPrintEvenPagesOnly、wdPrintOddPagesOnly。 
PrintToFile 设置为 True 可将打印机指令发送到文档。确保使用 OutputFileName 指定一个文件名。 
Collate 打印一个文档的多个副本时使用此参数。设置为 True 则在打印下一个副本前将打印此文档的所有页面。 
FileName 仅适用于 Application 对象。要打印的文档的路径和文件名。如果不用此参数,Word 将打印活动文档。 
ManualDuplexPrint 设置为 True 可在打印机上没有双面打印装置的情况下打印双面文档。 

PrintZoomColumn Variant 类型,可选。该参数表示 Word 在一页纸上水平放置的页数。可以是 1、2、3 或 4。与 PrintZoomRow 参数一同使用可在单张纸上打印多页文档。

PrintZoomRow Variant 类型,可选。该参数表示 Word 在一页纸上垂直放置的页数。可以是 1、2、3 或 4。与 PrintZoomColumn 参数一同使用可在单张纸上打印多页文档。

PrintZoomPaperWidth Variant 类型,可选。该参数表示 Word 将打印页面缩放到的宽度,以缇为单位(20 缇 = 1 磅;72 磅 = 1 英寸)。

PrintZoomPaperHeight Variant 类型,可选。该参数表示 Word 将打印页面缩放到的高度,以缇为单位(20 缇 = 1 磅;72 磅 = 1 英寸)。

以下代码将活动文档打印二份:

ActiveDocument.PrintOut Copies:=2

本示例打印活动文档的当前页面。

ActiveDocument.PrintOut Range:=wdPrintCurrentPage

本示例打印活动窗口中文档的前三页。

ActiveDocument.ActiveWindow.PrintOut _

Range:=wdPrintFromTo, From:="1", T="3"

本示例打印活动文档中的备注。

If ActiveDocument.Comments.Count >= 1 Then

ActiveDocument.PrintOut Item:=wdPrintComments

End If

本示例将打印活动文档,每张纸上打印六页文档。

ActiveDocument.PrintOut PrintZoomColumn:=3, _

PrintZoomRow:=2

本示例按实际尺寸的 75% 打印活动文档。

ActiveDocument.PrintOut _

PrintZoomPaperWidth:=0.75 * (8.5 * 1440), _

PrintZoomPaperHeight:=0.75 * (11 * 1440)
**********************************************************************************************************************************************

  public void printDoc()
    {
        Microsoft.Office.Interop.Word.Application app = null;
        Microsoft.Office.Interop.Word.Document doc = null;
        object missing = System.Reflection.Missing.Value;
        //object templateFile = Application.StartupPath + @"\模版.doc";
        object templateFile = MapPath("~/URL/paymentDetails/shoujv.doc");//模版路径
        try
        {
            app = new Microsoft.Office.Interop.Word.ApplicationClass();
            doc = app.Documents.Add(ref templateFile, ref missing, ref missing, ref missing);
            try
            {//在Word中输入文字,现在所要插入文字处插入书签用以定位
                foreach (Microsoft.Office.Interop.Word.Bookmark bm in doc.Bookmarks)
                {
                    if (bm.Name == "address")
                    {
                        bm.Select();
                        bm.Range.Text = address;
                    }
                    if (bm.Name == "danjia")
                    {
                        bm.Select();
                        bm.Range.Text = danjia;
                    }
                    if (bm.Name == "kh_name")
                    {
                        bm.Select();
                        bm.Range.Text = kh_name;
                    }
                    if (bm.Name == "mianji")
                    {
                        bm.Select();
                        bm.Range.Text =mianji;
                    }
                    if (bm.Name == "note")
                    {
                        bm.Select();
                        bm.Range.Text =note;
                    }
                    if (bm.Name == "OperateName")
                    {
                        bm.Select();
                        bm.Range.Text =OperateName;
                    }
                    if (bm.Name == "paramEnd")
                    {
                        bm.Select();
                        bm.Range.Text = paramEnd;
                    }
                    if (bm.Name == "paramStart")
                    {
                        bm.Select();
                        bm.Range.Text = paramStart;
                    }
                    if (bm.Name == "paydate")
                    {
                        bm.Select();
                        bm.Range.Text =pay_date;
                    }
                    if (bm.Name == "payName")
                    {
                        bm.Select();
                        bm.Range.Text =payName;
                    }
                    if (bm.Name == "serviceTimeEnd")
                    {
                        bm.Select();
                        bm.Range.Text =serviceTimeEnd;
                    }
                    if (bm.Name == "serviceTimeStart")
                    {
                        bm.Select();
                        bm.Range.Text =serviceTimeStart;
                    }
                    if (bm.Name == "shishou")
                    {
                        bm.Select();
                        bm.Range.Text = shishou;
                    }
                    if (bm.Name == "zongjia")
                    {
                        bm.Select();
                        bm.Range.Text =zongjia;
                    }
                }
            }
            catch { }
            //打印
            object copies = "3"; //要打印的份数。
            object pages = "1"; 
            doc.PrintOut(ref missing, ref missing, ref missing, ref missing,
                            ref missing, ref missing, ref missing, ref copies, ref pages,
                           ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing, ref missing, ref missing, ref missing);
        }
        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);
        }


    }



******************************************************************************************

posted on 2012-11-05 15:47  学中医的程序员  阅读(736)  评论(0编辑  收藏  举报

导航