You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
343 lines
10 KiB
343 lines
10 KiB
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"
|
|
''' <summary>
|
|
''' Helper Class
|
|
''' </summary>
|
|
''' <remarks>
|
|
''' Diese private Klasse hostet das Acrobat ActiveX Control,
|
|
''' so dass es in das UserControl eingefügt werden kann.
|
|
''' </remarks>
|
|
Private Class PDFHost
|
|
Inherits AxHost
|
|
|
|
''' <summary>
|
|
''' Initialisiert den Host
|
|
''' </summary>
|
|
Public Sub New(ByVal sCLSID As String)
|
|
MyBase.New(sCLSID)
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' Gibt ein Objekt-Verweis auf das ActiveX Control zurück
|
|
''' </summary>
|
|
Public ReadOnly Property Viewer() As Object
|
|
Get
|
|
Try
|
|
Return Me.GetOcx
|
|
Catch ex As Exception
|
|
Return Nothing
|
|
End Try
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Gibt sämtliche von der Componente verwendeten Ressourcen frei.
|
|
''' </summary>
|
|
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"
|
|
''' <summary>
|
|
''' Initialisiert das UserControl
|
|
''' </summary>
|
|
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
|
|
|
|
''' <summary>
|
|
''' Initialisiert die Komponente.
|
|
''' </summary>
|
|
''' <remarks>
|
|
''' Ü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.
|
|
''' </remarks>
|
|
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"
|
|
''' <summary>
|
|
''' Die Eigenschaft liefert True zurück, wenn der Acrobat Reader
|
|
''' initialisiert wurde, anderenfalls False.
|
|
''' </summary>
|
|
<Browsable(False)> _
|
|
Public ReadOnly Property isInitialized() As Boolean
|
|
Get
|
|
Return m_isInitialized
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Legt den Layout Modus für das PDF-Dokument fest, oder liest diese aus.
|
|
''' </summary>
|
|
<Description("Legt den Layout Modus für das PDF-Dokument fest, oder liest diese aus."), _
|
|
Category("Darstellung"), _
|
|
DefaultValue(GetType(PDFLayoutMode), "DontCare")> _
|
|
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
|
|
|
|
''' <summary>
|
|
''' Legt den Modus für die Seitendarstellung fest,oder liest diese aus.
|
|
''' </summary>
|
|
<Description("Legt den Modus für die Seitendarstellung fest,oder liest diese aus."), _
|
|
Category("Darstellung"), _
|
|
DefaultValue(GetType(PDFPageMode), "none")> _
|
|
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
|
|
|
|
''' <summary>
|
|
''' Bestimmt, ob die ToolBar angezeigt werden soll.
|
|
''' </summary>
|
|
<Description("Bestimmt, ob die ToolBar angezeigt werden soll."), _
|
|
Category("Layout"), _
|
|
DefaultValue(True)> _
|
|
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
|
|
|
|
''' <summary>
|
|
''' Bestimmt, ob die ScrollBars angezeigt werden sollen.
|
|
''' </summary>
|
|
<Description("Bestimmt, ob die ScrollBars angezeigt werden sollen."), _
|
|
Category("Layout"), _
|
|
DefaultValue(True)> _
|
|
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
|
|
|
|
''' <summary>
|
|
''' Legt den Modus für die Seiteneinpassung fest, oder liest diese aus.
|
|
''' </summary>
|
|
<Description("Legt den Modus für die Seiteneinpassung fest, oder liest diese aus."), _
|
|
Category("Darstellung"), _
|
|
DefaultValue(GetType(PDFViewMode), "Fit")> _
|
|
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"
|
|
''' <summary>
|
|
''' Geht im Undo-Buffer zur vorherigen Ansicht.
|
|
''' </summary>
|
|
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
|