Geschrieben von: Christian Koller
Kategorie: ASP Tricks
This printed page brought to you by AlphaSierraPapa
In diesem Artikel möchte ich Ihnen zeigen, wie man in einer ASP Seite ein PDF-Dokument mit Grafiken erzeugt. Im Artikel "Generieren von PDF-Dokumenten" können Sie sich über die Grundlagen von PDF-Dokumenten und über die in diesem Artikel verwendeten ActiveX Komponenten der Firma activePDF, Inc. informieren.
Das nachfolgende PDF Dokument wurde mit ActivePDF (activePDF Server und activePDF Printer) in einer ASP Seite generiert:
Bild 1: Zeichnungen in einem PDF Dokument
Wie kann man nun Zeichnungen mit Hilfe der activePDF Server und Printer Objekte erstellen?
Unter der Voraussetzung, daß ActivePDF am Webserver installiert ist, instanzieren Sie in einer ASP Seite die Objekte APServer.Object und APPrinter.Object mittels Server.CreateObject Befehl:
... ' 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 ...
Danach starten Sie den Erstellungsvorgang des PDF Dokumentes, setzen die "Papiergröße" des Dokumentes auf DIN A4. Außerdem ist es angebracht, das Dokument im "Farbmodus" zu erstellen (ColorMode = 2):
... ' Erstellungsvorgang des PDF Dokumentes am Server starten lRet = APServer.StartPrinting() If (lRet <> 0) Then Response.Write "Fehler bei StartPrinting aufgetreten!" Response.End End If ' Seitengroesse auf DIN A4 setzen (210 x 297 mm) APPrinter.PaperSize = 9 ' Siehe APPrinter Dokumentation ' PDF als Farbdokument erstellen APPrinter.ColorMode = 2 ...
Machen Sie das PDF Dokument mittles APPrinter.StartDoc Methode bereit zum Schreiben, und legen Sie noch fest, daß Text mittles der "AntiAliasing Technik" ausgegeben wird:
... ' Erstellen des Dokumentes beginnen: ' APServer.NewPrinterName liefert den Namen ' fuer die temporaere Spooling Datei APPrinter.StartDoc APServer.NewPrinterName ' Antialias fuer Text festlegen APPrinter.AntiAliasText = True ...
Nun können Sie Text in das PDF-Dokument schreiben, oder auch, wie in diesem Beispiel, einen Kreis zeichnen, der von einer dunkelblauen, strichpunktierten Linie begrenzt wird. Setzen Sie die Strichsärke (APPrinter.DrawWidth) und die Linienart des Kreises (APPrinter.DrawStyle) fest. Achten Sie darauf, daß Sie eine Strichstärke von 1 wählen wenn Sie keine durchgehende Linie haben möchten!
.. ' ### Zeichnen eines Kreises der Farbe Blau ### ' Festlegen der Strichstaerke in Pixel APPrinter.DrawWidth = 1 ' Festlegen der Linienart, (3 = Strichpunktierte Linie) APPrinter.DrawStyle = 3 ' Syntax: APPrinter.PrintCircle Step%, X!, Y!, Radius!, CircleColor Color = RGB(&H32, &H0E, &HFE) ' Blau APPrinter.PrintCircle 0, 1500, 1000, 700, Color ...
Der Syntax der PrintCircle Methode verlangt nach einer Farbe für den Kreis. Diese wird durch einen Integerwert repräsentiert, den man mittels der VBScript Funktion RGB(Rot, Blau, Grün) ermitteln kann.
Der Step% Parameter der PrintCircle Methode legt fest, ob die Koordinaten als absolute (Step% = 0) oder relative Koordinaten (Step% = 1) interpretiert werden.
Die X!, Y! und Radius! Parameter werden in der Einheit TWIPS angegeben. Ein "TWIP" ist eine Längeneinheit, die 1/20 eines "Print-Punktes" entspricht. 567 Twips ergeben einen Zentimeter, und 1440 Twips ergeben ein Inch (2.54 cm).
Zur Umrechnung von Zentimeter in TWIPS kann man die Funktion CMToTwips benutzen:
TWIPS = APPrinter.CMToTwips(AnzahlCM)
Um eine Ellipse zu zeichnen, bedient man sich der APPrinter.PrintEllipse Funktion. die folgenden Befehle zeichnen eine rote Ellipse mit durchgehender Linie der Stärke 20 Twips:
... ' ### Zeichnen einer Ellipse der Farbe Rot ### APPrinter.DrawWidth = 20 APPrinter.DrawStyle = 0 ' Durchgehende Linie ' Syntax: APPrinter.PrintEllipse Step%, X!, Y!, XRadius!, YRadius!,CircleColor Color = RGB(&HFF, &H00, &H00) ' Rot APPrinter.PrintEllipse 0, 2500, 1500, 1200, 700, Color ...
Die Parameter der PrintEllipse Methode sind analog der Parameter der PrintCircle zu benutzen.
Zum Zeichen einer Linie dient die Funktion APPrinter.PrintLine:
... ' ### Zeichnen einer Linie in Schwarz ### APPrinter.DrawWidth = 15 ' Syntax: APPrinter.PrintLine Step1%, X1!, Y1!, Step2%, X2!, Y2!, LineColor , FillOptions$ Color = RGB(&H00, &H00, &H00) ' Schwarz APPrinter.PrintLine 0, 1000, 2000, 0, 4000, 800, Color, 0 ...
Der Parameter FillOptions wird erst beim Erstellen einer Box (waagrechtes Rechteck) benötigt, wie im nächsten Absatz erklärt.
Eine Box erstellt man durch Gebrauch der PrintLine Methode, wobei man als FillOptions Parameter die Zeichenkette "B" angibt. Füllfarbe und Füllart legt man durch Setzen der DrawWidth und FillStyle Eigenschaften des APPrinter Objektes fest.
... ' ### Zeichnen eines gefuellten Rechteckes ### APPrinter.DrawWidth = 8 ' Fuellart festlegen: Waagrechte Linien APPrinter.FillStyle = 2 ' Fuellfarbe festlegen: Silber APPrinter.FillColor = RGB(&HC0, &HC0, &HC0) ' Silber ' Syntax: APPrinter.PrintLine Step1%, X1!, Y1!, Step2%, X2!, Y2!, LineColor , "B" ' Zeichenfarbe: Schwarz Color = RGB(&H00, &H00, &H00) ' Schwarz APPrinter.PrintLine 0, 4000, 1700, 0, 6000, 3000, Color, "BF" ...
Zum Abschluß wird noch eine Zeichenkette ein wenig "schräg" in das PDF-Dokument geschrieben.
Die APPrinter.PrintRotatedText dient dazu, um Text um einem bestimmten Winkel gedreht in das PDF-Dokument zu schreiben. In unserem Beispiel wird der Text "Rotation..." (Arial, 24 pt), um 250 Grad im Uhrzeigersinn gedreht, in das Dokument geschrieben:
... ' ### Zeichnen eines gedrehten Textes ### ' Font und Schriftgroesse festlegen APPrinter.FontName = "Arial" APPrinter.FontSize = 24 ' Festlegen der Position des Textes APPrinter.CurrentX = 7000 APPrinter.CurrentY = 2500 ' Syntax: APPrinter.PrintRotatedText Str$, CWDegrees APPrinter.PrintRotatedText "Rotation...", 250 ...
Wenn das Dokument fertig ist, wird es durch das Aufrufen der Befehle APPrinter.EndDoc und APServer.StopPrinting erstellt und am Webserver auf die Festplatte geschrieben. Von dort kann der User das PDF downloaden.
... ' 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 ...
Es ist keine große Schwierigkeit in PDF-Dokumenten Zeichnungen direkt in ASP zu erstellen. Die activePDF Printer Komponente bietet dazu genügend Funktionen, die Linien, Kreise, Ellipsen, Kreisbögen, Punkte oder Boxen zeichen. Die Linienfarbe, Füllfarbe, Linienstärke und vieles mehr kann man in einer ASP Seite spezifizieren um die gewünschten Zeichnungen in einem PDF File zu erstellen.
This printed page brought to you by AlphaSierraPapa
Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20001103.zip
Generieren von PDF-Dokumenten
http:/www.aspheute.com/artikel/20001017.htm
activePDF, Inc.
http://www.activepdf.com
Adobe PDF
http://www.adobe.de/products/acrobat/adobepdf.html
©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.