VB Allgemein

Die Darstellung von PDF-Dokumenten innerhalb eigener Anwendungen ist immer dann sinnvoll, wenn die dazustellenden Daten unveränderliche Inhalte fremden Ursprungs, automatisch erzeugte Inhaltssicherungen (z.B. dokumentenechte Sicherungen) oder gescannte Arbeitsmaterialien enthalten, die einfacherweise zur Ansicht oder zum Ausdruck gebracht werden sollen. Es ist möglich, die PDF-Dokumente durch das “ferngesteuerte” Öffnen des PDF-Viewers anzuzeigen, dies hat aber den Nachteil, daß immer ein separates, von der aktuellen Arbeitsumgebung abweichendes Fenster zu sehen ist.

Um ein “nahtlose” Integration zu ermöglichen bleibt nur die direkte Integration der PDF-Anzeige in die Applikation. Dies kann entweder über das Webbrowser-Steuerelement, durch die Einbindung des Acrobat-Active-X-Steuerelementes oder die Benutzung von Fremdbibliotheken erfolgen.

Das Webbrowser-Steuerelement

Das Webbrowser-Steuerelement stellt die einfachste Möglichkeit dar, PDF-Dokumente anzuzeigen. Der Trick ist, zur Laufzeit eine Miniatur-HTML-Datei anzufertigen, die als eingebetteten Inhalt den Verweis und die Parameter zur Anzeige des PDF-Files enthält.

Der Code um eine temporäre HTML-Datei zu erzeugen könnte in etwa so aussehen:

Dim strHTML As String
Dim
strTempFile As String = Environment.CurrentDirectory & “\docurl.htm”
If
UCase(Dir(strTempFile)) = UCase(“docurl.htm”) Then
Kill(strTempFile)
End If
If
UCase(Dir(value)) = UCase(gFileTitle(value)) Then
strHTML = “<html>” & vbCrLf
strHTML += “<body bgcolor=#E0E0E0>” & vbCrLf
strHTML += “<body topmargin=0 leftmargin=0>” & vbCrLf
strHTML += “<object data=”"” & strPathToPDF.Replace(“\”, “/”) _
& “#toolbar=1&amp&amp;scrollbar=1&amp;page=1&amp;view=FitH “”" & vbCrLf _
& “Type=”"application/pdf”"” _
& “Width = “”100%”"” _
& “height=”"100%”">”
strHTML += “<p>Sieht so aus, als wäre das PDF-Plugin nicht installiert.</p></object>”
strHTML += “</body></html>”
Else
strHTML = “<html>” & vbCrLf
strHTML = strHTML & “Datei “ & value & ” nicht vorhanden!”
strHTML = strHTML & “</body></html>”
End
If

Dim sr As New StreamWriter(strTempFile)
sr.Write(strHTML)
sr.Close()

Me.WebBrowser1.Navigate(strTempFile)

Das “fertige” HTML sieht dann so aus:

<html>
<body bgcolor=#E0E0E0>
<body topmargin=0 leftmargin=0>
<object data=”c:/test.pdf#toolbar=1&amp;navpanes=0&amp;scrollbar=1&amp;page=1&amp;view=FitH ”
Type=”application/pdf”Width = “100%”height=”100%”>
<p>Sieht so aus, als wäre das PDF-Plugin nicht installiert.</p>
</object>
</body>
</html>

Nachteilig ist der Umstand, daß durch die Sicherheitsmechanismen des durch das Steuerelement benutzten Explorers die Anzeigeparameter für das Ein/Ausblenden der Toolbar, die Seitenvorwahl und den Zoom für lokale Dateien nicht funktionieren.

Das PDF-Active-X

Wird innerhalb der VS-DIE auf das Active-X verwiesen (rechte Maustaste auf der Toolbox, “Elemente auswählen”) und das Control in einer Form plaziert, kann dieses sehr einfach zur Anzeige von PDF-Dateien benutzt werden.

 

Abb. Toolboxelement “Adobe PDF Reader”

Einige wenige Zeilen Code reichen aus, um die PDF darzustellen und die Anzeige einzustellen:

Me.AxAcroPDF1.LoadFile(value)
Me.AxAcroPDF1.setView(“FitH”)
Me.AxAcroPDF1.setShowToolbar(True)

Der Vorteil ist ohne Frage die Einfachheit des Konstruktes, nachteilig ist vor allem auch, daß man eine Active-X-Komponente in einer NET-Umgebung benutzt (Und das, nachdem man u.U. sehr mühsam von Active-X nach Net portiert hat ;-))