Generieren von Zeichnungen in PDF-Dokumenten
Geschrieben von: Christian Koller 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:
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 ... Einen dunkelblauen Kreis zeichnenNun 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: Eine rote Ellipse erstellenUm 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. Eine schwarze Linie ziehenZum 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 gefüllte Box zeichnenEine 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. Text schräggestellt schreibenDie 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 ... SchlußbemerkungEs 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. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte ArtikelLinks zu anderen SitesWenn 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.
©2000-2006 AspHeute.com |