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