Vom Bericht zum PDF-Dokument

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Das Thema Berichte und ihre Ausgabe in das PDF-Format beschäftigt Access-Entwickler seit Jahren. Zuletzt horchten die Entwickler auf, weil Microsoft die Integration eines solchen Exports als Feature von Office 2007 in Aussicht stellte. Da dies aber erstens nur als Extra-Tool kommt und zweitens nur mit Office 2007 funktioniert, stellen wir Ihnen ein kostenloses Tool zum Konvertieren von Berichten und Snapshots in PDF-Dokumente von Stephen Lebans vor.

PDF mit Umwegen

Genau genommen erstellt das Tool, das im Mit-telpunkt dieses Beitrags steht, nicht direkt ein PDF, sondern geht einen Umweg über das Snapshot-Format von Access-Berichten. Davon merkt der Anwender aber erstens nicht viel und zweitens kann man mit dem Tool auch aus Berichten, die bereits in das Snapshot-Format konvertiert wurden, noch PDF-Dokumente erstellen. Alles rund um das Snapshot-Format erfahren Sie übrigens in [1].

Download und Installation

Informationen und den Download des Tools finden Sie unter http://www.lebans.com/reporttopdf.htm. Der Download enthält zwei DLLs sowie eine Beispieldatenbank.

Die DLLs StrStorage.dll und DynaPDF.dll spei-chert man am besten im Verzeichnis c:\Windows\System32\. Sie können diese aber, wenn Sie keine Schreibrechte für dieses Verzeichnis besitzen, auch im gleichen Verzeichnis wie die Datenbank speichern. Die DLLs müssen nicht registriert werden; ebenso ist kein Verweis vom VBA-Projekt aus erforderlich.

Beispielexport

Anhand eines eigenen Beispielformulars zeigen wir Ihnen, wie Sie eigenen Datenbanken eine Funktion zum Exportieren von Berichten in PDF-Dateien hinzufügen können. Voraussetzung ist eine Datenbank mit zumindest einem Bericht, desweiteren macht ein Formular zur Steuerung des Vorgangs Sinn. Dieses sieht wie in Bild 1 aus.

pic001.tif

Bild 1: Formular mit einer Funktion zum Exportieren von Berichten in das PDF-Format

Das Kombinationsfeld cboBerichte zeigt alle in der Datenbank enthaltenen Berichte und zusätzlich den Eintrag <Bitte auswählen> an, der beim öffnen des Formulars automatisch ausgewählt wird. Für die Anzeige der Berichtsliste sorgt die folgende Datenherkunft:

SELECT "<Bitte auswählen>" AS Name FROM MSysObjects UNION SELECT MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=-32764));

Die folgende Routine sorgt dafür, dass der Eintrag <Bitte auswählen> beim öffnen des Formulars voreingestellt wird:

Private Sub Form_Open(Cancel As Integer)
 Me!cboBerichte = Me!cboBerichte.ItemData(0)
End Sub

Das Textfeld txtAusgabepfad erwartet die Angabe des Verzeichnisses und des Dateinamens der Zieldatei. Zur Vereinfachung befindet sich neben dem Textfeld eine Schaltfläche, die einen Dateiauswahldialog öffnet. Diese verwendet den in [2] vorgestellten Dateidialog.

Für die eigentliche Ausgabe sorgt die Schaltfläche cmdExportieren. Die dahinterstehende Ereignisprozedur ruft die Funktion ConvertReportToPDF auf, womit wir beim eigentlichen Kern der Sache angelangt wären.

PDF-Funktion integrieren

Um die Funktion zum Exportieren von Berichten in das PDF-Format verfügbar zu machen, importieren Sie zunächst das Modul modReportToPDF in die gewünschte Datenbank. Damit enthält die Datenbank selbst schon einmal die benötigte Funktionalität.

Außerdem benötigen Sie die Klasse clsFileDialog, um etwa beim direkten Konvertieren eines Snapshots die passende Datei per Dialog auswählen zu können. Fehlen nur noch die beiden DLLs dynapdf.dll und StrStorage.dll, sofern Sie diese noch nicht auf Ihr System kopiert haben.

Anschließend können Sie direkt auf die Funktion ConvertReportToPDF zugreifen. Diese hat folgende Signatur:

Public Function ConvertReportToPDF( _
     Optional RptName As String = "", _
     Optional SnapshotName As String = "", _
     Optional OutputPDFname As String = "", _
     Optional ShowSaveFileDialog _
As Boolean = False, _ Optional StartPDFViewer As Boolean = True, _ Optional CompressionLevel As Long = 0, _ Optional PasswordOwner As String = "", _ Optional PasswordOpen As String = "", _ Optional PasswordRestrictions As Long = 0, _ Optional PDFNoFontEmbedding As Long = 0 _ ) As Boolean

Die Parameter haben folgende Funktion:

  • RptName: Name des Berichts
  • SnapshotName: Name einer Snapshot-Datei, wenn das PDF-Dokument auf Basis eines Snapshots erstellt werden soll
  • OutputPDFName: Pfad und Name der zu erstellenden PDF-Datei
  • ShowSaveFileDialog: Legt fest, ob der Benutzer eine zu konvertierende Snapshot-Datei selbst auswählen soll; die beiden Parameter RptName und SnapshotName werden dann übergangen.
  • StartPDFViewer: Legt fest, ob das erzeugte PDF-Dokument direkt im PDF-Viewer angezeigt werden soll.
  • PDFNoFontEmbedding: Legt fest, ob Schriftarten im PDF-Dokument eingebunden werden sollen. Diese Option sollte den Wert True haben, sofern Sie nicht ausschließlich die 14 von Adobe Acrobat unterstützten verwenden (welche das sind, können Sie den Kommentaren der Routine ConvertReportToPDF entnehmen).

Die übrigen Optionen haben zu diesem Zeitpunkt noch keine Funktion.

Beispielaufruf

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar