Imports System.ComponentModel
Public Enum PDFLayoutMode
DontCare ' Layout laut Dokumentvorgabe
SinglePage ' einzelne Seite
OneColumn ' fortlaufende Seite
TwoColumnLeft ' fortlaufende Doppelseiten , ungerade Seiten links
TwoColumnRight ' fortlaufende Doppelseiten , ungerade Seiten rechts
End Enum
Public Enum PDFPageMode
none ' Default-Ansicht
bookmarks ' Ansicht Lesezeichen
thumbs ' Ansicht Miniaturansicht
End Enum
Public Enum PDFViewMode
Fit ' Komplette Seite passt vollständig ins bereitgestellte Objekt
FitV ' Seitenhöhe (Vertikale) passt vollständig ins Objekt
FitH ' Seitenbreite (Horizontale) passt vollständig ins Objekt
FitB ' Dokumentrahmen ("Bounding Box") passt vollständig ins Objekt
FitBV ' Dokumentrahmenhöhe (Vertikale) passt vollständig ins Objekt
FITBH ' Dokumentrahmenbreite (Horizontale) passt vollständig ins Objekt
End Enum
Public Class clspdfview
Inherits UserControl
Private m_PDFHost As PDFHost
Private m_isInitialized As Boolean = False
Private m_ShowToolBar As Boolean = True
Private m_ShowScrollBars As Boolean = True
Private m_LayoutMode As PDFLayoutMode = PDFLayoutMode.DontCare
Private m_PageMode As PDFPageMode = PDFPageMode.none
Private m_ViewMode As PDFViewMode = PDFViewMode.Fit
#Region "Host Helper Class"
'''
''' Helper Class
'''
'''
''' Diese private Klasse hostet das Acrobat ActiveX Control,
''' so dass es in das UserControl eingefügt werden kann.
'''
Private Class PDFHost
Inherits AxHost
'''
''' Initialisiert den Host
'''
Public Sub New(ByVal sCLSID As String)
MyBase.New(sCLSID)
End Sub
'''
''' Gibt ein Objekt-Verweis auf das ActiveX Control zurück
'''
Public ReadOnly Property Viewer() As Object
Get
Try
Return Me.GetOcx
Catch ex As Exception
Return Nothing
End Try
End Get
End Property
'''
''' Gibt sämtliche von der Componente verwendeten Ressourcen frei.
'''
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If Me.Viewer IsNot Nothing Then
Me.Viewer.Dipose()
End If
MyBase.Dispose(disposing)
End Sub
End Class
#End Region
#Region "Initialisierungen"
'''
''' Initialisiert das UserControl
'''
Public Sub New()
MyBase.New()
Me.InitializeComponent()
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If m_isInitialized Then
m_PDFHost.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'''
''' Initialisiert die Komponente.
'''
'''
''' Über Late Binding wird versucht, eine Instanz des Acrobat Readers
''' zu erzeugen. Auf dem Zielsystem muss der Reader in der Version 7
''' oder höher installiert sein. Ist dies nicht der Fall, wird eine
''' Fehlermeldung ausgegeben.
'''
Private Sub InitializeComponent()
Dim t As Type = Type.GetTypeFromProgID("AcroPDF.PDF")
If t IsNot Nothing Then
m_PDFHost = New PDFHost(t.GUID.ToString)
DirectCast((m_PDFHost), ISupportInitialize).BeginInit()
SuspendLayout()
m_PDFHost.TabIndex = 0
m_PDFHost.Visible = True
m_PDFHost.Name = "PDFHost"
m_PDFHost.Dock = DockStyle.Fill
Controls.Add(m_PDFHost)
DirectCast((m_PDFHost), ISupportInitialize).EndInit()
ResumeLayout(False)
PerformLayout()
m_isInitialized = True
Else
m_isInitialized = False
MessageBox.Show("Der Acrobat Reader Version 7 oder höher konnte nicht initialisiert werden." _
& vbCrLf & "Bitte installieren Sie den Acrobat Reader in der Version 7 oder höher." _
, "Überprüfung Acrobat Reader", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
#End Region
#Region "Properties"
'''
''' Die Eigenschaft liefert True zurück, wenn der Acrobat Reader
''' initialisiert wurde, anderenfalls False.
'''
_
Public ReadOnly Property isInitialized() As Boolean
Get
Return m_isInitialized
End Get
End Property
'''
''' Legt den Layout Modus für das PDF-Dokument fest, oder liest diese aus.
'''
_
Public Property LayoutMode() As PDFLayoutMode
Get
Return m_LayoutMode
End Get
Set(ByVal value As PDFLayoutMode)
m_LayoutMode = value
Try
m_PDFHost.Viewer.setLayoutMode(m_LayoutMode.ToString)
Catch ex As Exception
Throw ex
End Try
End Set
End Property
'''
''' Legt den Modus für die Seitendarstellung fest,oder liest diese aus.
'''
_
Public Property PageMode() As PDFPageMode
Get
Return m_PageMode
End Get
Set(ByVal value As PDFPageMode)
m_PageMode = value
Try
m_PDFHost.Viewer.setPageMode(m_PageMode.ToString)
Catch ex As Exception
Throw ex
End Try
End Set
End Property
'''
''' Bestimmt, ob die ToolBar angezeigt werden soll.
'''
_
Public Property ShowToolBar() As Boolean
Get
Return m_ShowToolBar
End Get
Set(ByVal value As Boolean)
m_ShowToolBar = value
Try
m_PDFHost.Viewer.setShowToolbar(value)
Catch ex As Exception
Throw ex
End Try
End Set
End Property
'''
''' Bestimmt, ob die ScrollBars angezeigt werden sollen.
'''
_
Public Property ShowScrollBars() As Boolean
Get
Return m_ShowScrollBars
End Get
Set(ByVal value As Boolean)
m_ShowScrollBars = value
Try
m_PDFHost.Viewer.setShowScrollbars(value)
Catch ex As Exception
Throw ex
End Try
End Set
End Property
'''
''' Legt den Modus für die Seiteneinpassung fest, oder liest diese aus.
'''
_
Public Property ViewMode() As PDFViewMode
Get
Return m_ViewMode
End Get
Set(ByVal value As PDFViewMode)
m_ViewMode = value
Try
m_PDFHost.Viewer.setView(m_ViewMode.ToString)
Catch ex As Exception
Throw ex
End Try
End Set
End Property
#End Region
#Region "Methoden"
'''
''' Geht im Undo-Buffer zur vorherigen Ansicht.
'''
Public Sub GoBackward()
Try
m_PDFHost.Viewer.GoBackwardStack()
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub GoForward()
Try
m_PDFHost.Viewer.GoForwardStack()
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub GotoPage(ByVal PageNumber As Integer)
Try
m_PDFHost.Viewer.setCurrentPage(PageNumber)
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub GotoFirstPage()
Try
m_PDFHost.Viewer.GotoFirstPage()
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub GotoLastPage()
Try
m_PDFHost.Viewer.GotoLastPage()
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub GotoNextPage()
Try
m_PDFHost.Viewer.GotoNextPage()
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub GotoPreviousPage()
Try
m_PDFHost.Viewer.GotoPreviousPage()
Catch ex As Exception
Throw ex
End Try
End Sub
Public Function LoadFile(ByVal FileName As String) As Boolean
Try
Dim b As Boolean = m_PDFHost.Viewer.LoadFile(FileName)
If b Then
Me.ShowToolBar = m_ShowToolBar
Me.ShowScrollBars = m_ShowScrollBars
Me.LayoutMode = m_LayoutMode
Me.PageMode = m_PageMode
Me.ViewMode = m_ViewMode
End If
Return b
Catch ex As Exception
Throw ex
End Try
End Function
Public Sub PrintWithDialog()
Try
m_PDFHost.Viewer.PrintWithDialog()
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub Zoom(ByVal Percent As Single)
Try
m_PDFHost.Viewer.setZoom(Percent)
Catch ex As Exception
Throw ex
End Try
End Sub
#End Region
End Class