VB.NET2010 编程实现Word双面打印

来源:互联网 发布:ios 数组替换指定位置 编辑:程序博客网 时间:2024/04/29 11:59

先上成品图一张。



起因:

       家里有一台激光打印机,便宜货,无法实现自动双面打印,由于要打印资料,本着节约纸张,绿色生活的理念(其实纸张很贵 - -||,不双面打不行哇),手动送纸,翻页,实现双面打印,非常麻烦

解决方案:

     1、先顺序打印奇数页;

     2、后逆序打印偶数页;

    按照以上方法,打印完到手上的纸张为正确的顺序。

难点:

     VB.NET操作word打印。

核心Code:

    Private Sub btnBroswer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBroswer.Click        Dim dlg As New OpenFileDialog        dlg.Title = "请选择一个待打印的Word文档"        dlg.Filter = "所有文件|*.*|Word2003|*.doc|Word2007|*.docx"        dlg.InitialDirectory = Environment.SpecialFolder.DesktopDirectory        dlg.ShowDialog()        If dlg.FileName <> "" Then            txtPath.Text = dlg.FileName            strPrintFirst = ""            strPrintSecond = ""            strPrintThird = ""            btnPrint1.Enabled = False            btnPrint2.Enabled = False            btnPrint3.Enabled = False            '隐藏word程序            oWordApplic.Visible = False            oDocument.Close(Word.WdSaveOptions.wdDoNotSaveChanges)            '打印待打印的word文档            oDocument = oWordApplic.Documents.Open(txtPath.Text, Missing, True, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, True, Missing, Missing, Missing, Missing)            '获取页面总页数            iTotalPages = oDocument.ComputeStatistics(WdStatistic.wdStatisticPages)            If iTotalPages Mod 2 Then                '页面为奇数                For i = 1 To iTotalPages - 1 Step 2                    strPrintFirst &= i & ","                Next                For i = iTotalPages - 1 To 2 Step -2                    strPrintSecond &= i & ","                Next                strPrintThird = iTotalPages.ToString()            Else                '页面为偶数                For i = 1 To iTotalPages Step 2                    strPrintFirst &= i & ","                Next                For i = iTotalPages To 2 Step -2                    strPrintSecond &= i & ","                Next            End If            strPrintFirst = strPrintFirst.Substring(0, strPrintFirst.Length - 1)            strPrintSecond = strPrintSecond.Substring(0, strPrintSecond.Length - 1)            If iTotalPages = 1 Then                GroupBox1.Text = "打印信息:" & iTotalPages & "页/1次打印"                btnPrint1.Enabled = True                btnPrint2.Enabled = False                btnPrint3.Enabled = False                Exit Sub            End If            If strPrintThird <> "" Then                GroupBox1.Text = "打印信息:" & iTotalPages & "页/3次打印"                btnPrint1.Enabled = True                btnPrint2.Enabled = True                btnPrint3.Enabled = True            Else                GroupBox1.Text = "打印信息:" & iTotalPages & "页/2次打印"                btnPrint1.Enabled = True                btnPrint2.Enabled = True                btnPrint3.Enabled = False            End If        End If    End Sub
    Private Sub btnPrint1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint1.Click        If MsgBoxResult.Yes = MsgBox("请确认打印机已经打开,纸张足够?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "无痕软件") Then            btnPrint1.Enabled = False            oDocument.PrintOut(Range:=4, Pages:=strPrintFirst)        End If    End Sub

源码+编译程序下载地址

百度网盘编译程序下载(无源码)

注意:需要安装office2007方可正常运行。


0 0
原创粉丝点击