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 Zeichnungen in PDF-Dokumenten

Geschrieben von: Christian Koller
Kategorie: ASP Tricks

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
...

Einen dunkelblauen Kreis zeichnen

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)

Eine rote Ellipse erstellen

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.

Eine schwarze Linie ziehen

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 gefüllte Box zeichnen

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.

Text schräggestellt schreiben

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
...

Schlußbemerkung

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.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Generieren von PDF-Dokumenten

Links zu anderen Sites

activePDF, Inc.
Adobe PDF

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.