About the Print active view Sample
[C#]
PrintActiveViewVB_Net_Addin.cs
[Visual Basic .NET]
PrintActiveViewVB_Net_Addin.vb
Imports System.Runtime.InteropServices
Imports System.Drawing
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Output
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.Display
Imports System.Windows.Forms
Public Class PrintActiveViewVB_Net_Addin
Inherits ESRI.ArcGIS.Desktop.AddIns.Button
Public Sub New()
End Sub
Protected Overrides Sub OnClick()
PrintActiveViewVB(3)
End Sub
Protected Overrides Sub OnUpdate()
End Sub
Private Sub PrintActiveViewVB(ByVal iResampleRatio As Integer)
' Prints the Active View of the document to selected output format.
Dim docActiveView As IActiveView = My.ArcMap.Document.ActiveView
Dim docPrinter As IPrinter
Dim PrintAndExport As IPrintAndExport = New PrintAndExport
Dim docPaper As IPaper
Dim sNameRoot As String
Dim iNumPages As Short
Dim sysPrintDocument As System.Drawing.Printing.PrintDocument
' assign the output filename.
sNameRoot = "PrintActiveViewVBSample"
' testing to see if printer instantiated in sysPrintDocument is the
' default printer. It SHOULD be, but this is just a reality check.
docPrinter = New EmfPrinter()
sysPrintDocument = New System.Drawing.Printing.PrintDocument()
docPaper = New Paper()
If sysPrintDocument.PrinterSettings.IsDefaultPrinter Then
'Set docPaper's printername to the printername of the default printer
docPaper.PrinterName = sysPrintDocument.PrinterSettings.PrinterName
Else
'if we get an unexpected result, return.
MsgBox("Error getting default printer info, exiting...")
Return
End If
'make sure the paper orientation is set to the orientation matching the current view.
docPaper.Orientation = My.ArcMap.Document.PageLayout.Page.Orientation
'assing docPrinter's paper. We have to do this in two steps because you cannot change a
'printers' paper after it's assigned. That's why we set docPaper.PrinterName first.
docPrinter.Paper = docPaper
'set the spoolfilename (this is the job name that shows up in the print queue)
docPrinter.SpoolFileName = sNameRoot
' Find out how many printer pages the output will cover. iNumPages will always be 1
' unless the user explicitly sets the tiling options in the file->Print dialog.
If TypeOf My.ArcMap.Document.ActiveView Is IPageLayout Then
My.ArcMap.Document.PageLayout.Page.PrinterPageCount(docPrinter, 0, iNumPages)
Else
'it's data view, and so we always just need one page.
iNumPages = 1
End If
Dim lCurrentPageNum As Short
For lCurrentPageNum = 1 To iNumPages Step lCurrentPageNum + 1
Try
PrintAndExport.Print(docActiveView, docPrinter, My.ArcMap.Document.PageLayout.Page, lCurrentPageNum, iResampleRatio, Nothing)
Catch ex As Exception
MessageBox.Show("An error has occurred: " + ex.Message)
End Try
Next
End Sub
End Class