Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Generieren von PDF-Dokumenten

Geschrieben von: Christian Koller
Kategorie: ASP Tricks

Ein beliebtes Format für downloadbare Dokumente im Internet ist das Adobe Portable Document Format (PDF). Ein PDF Dokument ist unter fast jeder Plattform, sei es nun Windows, Mac OS, Unix, Linux oder OS/2 Warp auslesbar, solange man den Adobe Acrobat Reader benutzt, der gratis erhältlich ist.

Bei der Darstellung eines PDF Dokumentes bleiben alle Schriften, Formatierungen, Grafiken und Farben erhalten, egal unter welchem Betriebsystem und mit welcher Software das PDF Dokmuent erstellt wurde.

Überlicherweise benutzt man zur Erstellung von PDF Dokumenten die Adobe Acrobat Software, die unter Macintosh und Windows lauffähig und in verschiedenen Sprachen erhältlich ist.

Zum Lesen eines PDF Dokuments dient der gratis erhältliche Adobe Acrobat Reader (6.3 MB), der für die folgenden Plattformen und Sprachen erhältlich ist:

Plattformen, für die Acrobat Reader verfügbar ist:

  • Mac OS
  • Windows 3.1x, 95, 98, ME
  • Windows NT 4.0, 2000
  • OS/2 Warp
  • Linux
  • UNIX: DEC Alpha, HP-UX, IBM AIX, SGI IRIX, Sun Solaris x86 & SPARC

Sprachenversionen von Acrobat Reader:

  • Chinesisch, vereinfacht
  • Chinesisch, traditionell
  • Niederländisch
  • Englisch
  • Englisch, Mittlerer Osten (liest arabische und hebräische Schriften)
  • Französisch
  • Französisch, Mittlerer Osten (liest arabische und hebräische Schriften)
  • Deutsch
  • Italienisch
  • Japanisch
  • Koreanisch
  • Portugiesisch, Brasilianisch
  • Spanisch, Katalanisch
  • Schwedisch

Sollten Sie einmal in die Verlegenheit kommen, unter ASP dynamisch PDF Dokumente erzeugen zu müssen, so könnten Sie für diese Aufgabe die ActivePDF Komponenten der Firma activePDF, Inc. benutzen. Die Preisskala für eine ein einsetzbares activePDF Bundlebeginnt bei etwa $ 560.- und ist je nach Einsatzzweck und Geschwindkeitsbedarf nach oben offen.

Aufbau PDF Dokument

Ein PDF Dokument ist prinzipiell ähnlich wie ein HTML Formular aufgebaut. Es gibt formatierten Text, Links und sogar ein Fomular-Feature für PDF Dokumente, das über einen JavaScript Dialekt angesteuert werden kann.

Eine deutschsprachige Einleitung in die PDF Technologie finden Sie zum Beispiel auf der Website von Vision Work.

Einsatz von activePDF am Webserver

ActivePDF Komponenten sind in ASP Seiten und anderen Microsoft Produkten einsetzbar, da Sie alle über COM Interfaces verfügen. Allerdings gilt es bei der Installation der Komponenten, speziell unter Windows 2000, einiges zu beachten. Dazu aber später.

Um die PDF-Ergebnisse der Komponente testen zu können, empfiehlt es sich die neueste Version des Adobe Acrobat Readers zu installieren. Download direkt von Adobe Deutschland möglich.

Die ActivePDF Software zum Einsatz auf einem Webserver besteht aus mehreren Komponenten, die separat und in einem Bundle geordert werden können:

  • activePDF Server: Erlaubt einfachen Redirect von ASP auf PDF Dateien. Zusammen mit activePDF Printer für ASP bereits einsetzbar um PDF Dokumente zu erstellen und zum Browser zu schicken. Ein ASP Beispiel dafür präsentiere ich in diesem Artikel.
  • activePDF Printer: Erlaubt das Erstellen von PDF Dateien mit voller Kontrolle über den Inhalt, Schriftlayout, Grafiklayout, Bilder, usw.
  • activePDF WebGrabber: Liest den Inhalt beliebiger HTML Seiten des Internets oder HTML aus einem String und konvertiert diesen in ein PDF Dokument. Unterstützt vollständig HTML 4.0 (nach W3C Spezifikation) einschließlich CSS and SSL. Integriert automatisch JPEG, GIF Bilder sowie Java Applets und Flash Bilder!
  • activePDF DocConverter: Dieses Add-On zu activePDF Server erlaubt das Konvertieren von beliebigen Office 97 und Office 2000 Dokumente (Word, Excel, PowerPoint), WordPerfect und vielen anderen Dokumentformaten. Eine vollständige Liste konvertierbarer Dokumente finden Sie unter http://www.activepdf.com/default.asp?PI=4994280.
  • activePDF Toolkit: Erlaubt die einfache Implementation von PDF Formularen inklusive der dahinterstehenden Logik. Integration von Datenbank-Inhalten über OLE DB und ODBC ist möglich. Die Erstellung von komplexen PDF Dokumenten wird damit wesentlich vereinfacht. Die PRO Version erlaubt darüber hinaus Verschlüsseln von PDF Dokumenten, Umwandlung verschiedenster Bilder in PDF und bietet eine Text2PDF Funktionalität.
  • activePDF Spooler: Druckt PDF Dokumente auf einem beliebigem Drucker aus.

Daneben ist das activePDF Portfolio Bundle erhältlich, das in der Standard- und Proversion unerschiedliche Einzelkomponenten umfasst.

Um PDF Dateien generieren zu können, benötigen Sie mindestens die activePDF Server und die activePDF Printer Komponenten.

Installation von activePDF Server und activePDF Printer

Um die grundlegenden Fähigkeiten von activePDF nützen zu können, empfiehlt sich die Installation der zwei Komponenten activePDF Server und activePDF Printer.

activePDF Server

Die activePDF Server Komponente stellt die grundlegenden Webserverfunktionen der activePDF Applikation bereit.

Um die activePDF Server Komponente zu installieren, schließt man sämtliche Anwendungen und startet die Installationsdatei apsrvr.exe.

Für die einwandfreie Funktion der Komponente unter Windows 2000 ist es in der aktuellen Version erforderlich, daß ein Postscript Drucker als lokaler Drucker am Webserver installiert wird. Der Drucker muß aber keineswegs wirklich vorhanden sein.

Dies ist ein Kunstgriff, damit die Komponente Zugriff auf Schriften und Layout von Dokumenten über einen PostScript Treiber hat, der (noch) nicht als Stand-Alone Driver für Windows 2000 verfügbar ist.

Der Hersteller empfiehlt unter Windows 2000 den "Apple Color LW 12/660 PS" Drucker unter dem Namen "activePDF PostScript Printer" zu installieren (Control Panel, Drucker, Drucker hinzufügen).

Eine Schritt-für-Schritt Anweisung in Englisch dazu liegt im Installationsverzeichnis von activePDF Server in der Datei win2K.txt vor. Das Installationsverzeichnis ist standardmäßig C:\Programme\ActivePDF (Deutsches Windows 2000) oder C:\Program Files\ActivePDF (Englisches Windows 2000).

Nach der "Installation" des Druckers muß die activePDF Komponente konfiguriert werden, damit Sie auf den Treiber dieses Druckers zugreift. Dies bewerkstelligt man mittels activePDF Configuration Editor, einem Programm das mit der activePDF Server Komponente automatisch installiert wird. Daneben kann man auch direkt bei Benutzung des activePDF Server (APServer) Objektes festlegen, welcher Druckertreiber zum Erstellen des PDF Dokumentes herangezogen wird (DefaultPrinter Property des APServer Objektes).

Öffnen Sie also den activePDF Configuration Editor (über das Start Menü, Programme, ActivePDF, Server, Configuration Editor) und stellen Sie den Drucker für die PostScript Emulation auf "activePDF PostScript Printer" (siehe Bild 1).


Bild 1: activePDF Configuration Editor

Nun testen Sie die Komponente auf korrekte Installation. Führen Sie dazu das activePDF Test Utility (Start Button, Programme, ActivePDF, Server) aus. Ist die Komponente korrekt installiert, so erstellt das Test Utility ein PDF Dokument im Verzeichnis C:\WINNT\ActivePDF.

Um die Komponente auch aus ASP Seiten heraus benutzen zu können, müßen Sie für das Installationsverzeichnis /WINNT/ActivePDF/ NTFS (NT File System) Lese- und Schreibrechte für den IUSR_MachineName Account definiert haben (siehe auch MSDN Artikel HOWTO: Troubleshoot IUSR_machine Permissions Problem).

Nach der Installation der Komponente emfpiehlt sich ein Neustart des Computers. Man kann vor dem Neustart allerdings problemlos noch die activePDF Printer Komponente installieren.

activePDF Printer

Die activePDF Printer Komponente benötigt man um PDF Dateien aus ASP Seiten heraus zu erstellen. Diese PDF Dateien werden entweder auf der Festplattte des Servers gespeichert oder mittels activePDF Server Komponente gleich zum Browser gesendet.

Die Installation von activePDF Printer startet man durch das Ausführen der Installationsdatei apprntr.exe.

Nach der Installation der Komponente muß der Server neu gestartet werden um die Installation abzuschließen.

Wie man die activePDF Printer und die activePDF Server Komponenten einsetzt um ein PDF Dokument zu erstellen und zum Webserver zu senden, zeigt das folgende Beispiel.

Erstellen von PDF Dokumenten in ASP

Zum Erstellen und Versenden von PDF Dokumenten kommen im nachfolgenden Beispiel die activePDF Server und activePDF Printer Komponenten zum Einsatz.

Beide Komponenten werden unter VBScript (in ASP) wie folgt instanziert:

' activePDF Server Objekt
Set APServer = Server.CreateObject("APServer.Object")

' activePDF Printer Objekt
Set APPrinter = Server.CreateObject("APPrinter.Object")

Nach Verwendung der Objekte ist darauf zu achten, daß die von den Objekten benutzen Resourcen wieder freigegeben werden:

' activePDF Server Objekt loeschen
Set APServer = Nothing

' activePDF Printer Objekt loeschen
Set APPrinter = Nothing

Nun aber zum Beispiel: Das folgende Skript generiert ein PDF Dokument, legt es am Webserver ab und schreibt den Link zum abgelegten PDF Dokument zum Browser:

<% Option Explicit %>
<%
Dim APServer, APPrinter
Dim strText, arrZeilen, intI 
Dim physOutputDirectory, OutputDirectory, lRet
Dim physPDFFileName, PDFFileName

strText = "Dies ist ein Probetext." & vbcrlf & _
  "Sie können diesen Text lesen, also hat es funktioniert!"

' Die Datei wird in das Root Verzeichnis geschrieben:
OutputDirectory = "/"
physOutputDirectory = Server.MapPath(OutputDirectory)

' Instanziere activePDF Server Objekt
Set APServer = Server.CreateObject("APServer.Object")

' Instanziere activePDF Printer Objekt
Set APPrinter = Server.CreateObject("APPrinter.Object")

' Ausgabe Verzeichnis zum Schreiben des PDF Dokumentes
APServer.OutputDirectory = physOutputDirectory

' Erstellungsvorgang des PDF Dokumentes am Server starten
lRet = APServer.StartPrinting() 
If (lRet <> 0) Then
   Response.Write  "Fehler bei StartPrinting aufgetreten!"
   Response.End
End If

' Erstellen des Dokumentes beginnen:
' APServer.NewPrinterName liefert den Namen
' fuer die temporaere Spooling Datei
APPrinter.StartDoc APServer.NewPrinterName

' Font und Schriftgroesse festlegen
APPrinter.FontName = "Arial"
APPrinter.FontSize = 24

' Text zum PDF Dokument schreiben
arrZeilen = Split(strText , vbcrlf)
For intI = 0 to UBound(arrZeilen)
   APPrinter.PrintText arrZeilen(intI), 0
Next

' Erstellen des Dokumentes ist beendet 
APPrinter.EndDoc

' Warten bis der PDF Job beendet ist. 
lRet = APServer.Wait(3)  ' Maximale Wartezeit: 3 Sekunden
If (lRet <> 0) then
   APServer.StopPrinting
   Response.Write  "Es ist ein Fehler aufgetreten!"
   Set APPrinter = Nothing
   Set APServer = Nothing
   Response.End
End If

' Erstellungsvorgang des PDF Dokumentes am Server ist fertig
APServer.StopPrinting

' PDF Datei mit phsyikalischem und virtuellem Pfad:
physPDFFileName = APServer.OutputDirectory & "\" & _
   APServer.NewUniqueID & ".PDF"
PDFFileName = OutputDirectory &  APServer.NewUniqueID & ".PDF"

' Nachricht zum Browser schreiben
' Nachricht zum Browser schreiben
Response.Write "Das PDF Dokument<br><b>" & physPDFFileName & _
   "</b><br>wurde erzeugt und steht unter <br><b>" & _
   "<a href=""" & PDFFileName & """>" & PDFFileName & "</a></b>"  & _
   "<br>zum Download bereit."

' WICHTIG: Resourcen der Objekte wieder freigeben
Set APPrinter = Nothing
Set APServer  = Nothing
%>

Das Skript speichert einen zweizeiligen Text in der Variablen strText ab. Das Verzeichnis, in dem das generierte PDF Dokument zu speichern ist, wird in den Variablen OutputDirectory (virtueller Pfad) und physOutputDirectory (physikalischer Pfad) festgelegt.

Danach werden die activePDF Server und Printer Objekte instanziert und in den Variablen APServer und APPrinter gespeichert.

Das Ausgabeverzeichnis, in dem das PDF Dokument erstellt wird, wird mittels OutputDirectory Eigenschaft des activePDF Server Objektes festgelegt:

' Ausgabe Verzeichnis zum Schreiben des PDF Dokumentes
APServer.OutputDirectory = physOutputDirectory

Der Erstellungsvorgang für das PDF Dokument wird durch den Aufruf der StartPrinting Methode des activePDF ServerObjektes eingeleitet.

Die Erstellung des eigentlichen PDF Dokumentes beginnt mit dem Ausführen des Befehles APPrinter.StartDoc APServer.NewPrinterName.

Der Syntax für die StartDoc Methode des Printer Objektes lautet dabei wie folgt:

APPrinter.StartDoc strPrinterName

Der Parameter strPrinterName beinhaltet dabei den Namen des Druckers, dessen PostScript Treiber für die Erstellung des PDF Dokumentes verwendet wird. Wenn Sie im Configuration Editor der activePDF Server Komponente einen Drucker spezifiziert haben, so ist der Name dieses Druckers mittels APServer.NewPrinterName auslesebar.

Daher macht der Befehl APPrinter.StartDoc APServer.NewPrinterName nichts anderes als den im Configuration Editor eingestellten Drucker als denjenigen festzulegen, dessen PostScript Treiber zur Erstellung des PDF Dokumentes benutzt wird.

Schriftart und -größe werden über die FontName und FontSize Eigenschaften des Printer Objektes festgelegt.

Eine Textzeile wird mit dem folgenden Befehl zum PDF Dokument hinzugefügt:

APPrinter.PrintText strText, 0

Um den mehrzeiligen Text, der in der Variable strText gespeichert ist, zum PDF Dokument zu schreiben, ist es leider notwendig, die einzelnen Zeilen des Textes zu separieren. Genau dies macht der Befehl arrZeilen = Split(strText , vbcrlf). Er schreibt jede einzelne Zeile in eine Zelle des Arrays arrZeilen.

Die im Array arrZeilen gespeicherten Textzeilen werden in der For..Next Schleife in das PDF Dokument geschrieben.

Nachdem das Erstellen des PDF Dokumentes beendet ist, ruft man APPrinter.EndDoc auf um das PDF Dokument auf die Festplatte zu schreiben.

Der Befehl APServer.StopPrinting schließlich beendet den Erstellungsprozeß des PDF Dokumentes.

So schreibt das Skript noch den physikalischen und virtuellen Pfad des fertigen PDF Dokumentes zum Browser (siehe Bild 2).


Bild 2: Ausgabe des Skripts

Die generierte PDF Datei sieht dann wie folgt aus:


Bild 3: Generierte PDF Datei

Dieses Skript zeigt nur die Grundfunktionen von activePDF auf. Die verfügbare Funktionalität ist schier überwältigend. So erlaubt das activePDF Printer Objekt das on-the-fly generieren von Zeichenobjekten (Linien, Kreise, Ellipsen, Radio Buttons, Textfelder) in PDF Dateien, das Importieren von Grafiken in den Formaten OLEPicture, BMP, JPG, TGA, PCX, DCX, und noch vieles mehr.

Schlußbemerkung

Die activePDF Produktfamilie mit Ihren Komponenten erlaubt das Generieren von PDF Dokumenten direkt aus ASP heraus.

Neben dem Importieren aller möglichen Dokumente und Grafiken wird auch das direkte Schreiben von formatiertem Text und das Zeichnen von Grafikobjekten unterstützt.

Das activePDF Server Objekt ist der Dreh- und Angelpunkt zur Manipulation von PDF Dokumenten am Server. Diese Objekt ist nicht nur für den eigentlichen Generierungsprozeß des PDF Dokumentes zuständig, das activePDF Server Objekt erlaubt auch das direkte Downloaden von generierten PDF Dokumenten zum Browser.

Dieses Beispiel und einige andere Tricks werde ich, bei entsprechendem Interesse, in einer Fortsetzung dieses Artikels vorstellen.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Generieren von Zeichnungen in PDF-Dokumenten

Links zu anderen Sites

Über Adobe PDF
ActivePDF Portfolio
activePDF Printer
ActivePDF Server
Adobe Acrobat 4.0
Adobe Acrobat Reader 4.0
Create Adobe PDF Online
HOWTO: Troubleshoot IUSR_machine Permissions Problem
PDF-Workflow, Einführung in die PDF Technologie

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.