Dokumentation zu fly2pdf

0.) Vorwort
Dies ist der erste Versuch einer Dokumentation für die Bibliothek fly2pdf. Grundsätz...
' Erstellen eines Schriftart(Font)-Objektes
          Set font = WScript.CreateObject(quot;fly2pdf.clsFontquot;)

        ...
erstellt wurden, weil sich so Include-Dateien verwenden lassen und sich die Übersichtlichkeit
wesentlich erhöht.

        ...
Das Dokument-Objekt

Beschäftigen wir uns etwas näher mit dem Dokument-Objekt, da es das zentrale Objekt von fly2pdf
ist. ...
Eigenschaften

  Eigenschaft                Typ                                                                    Beschre...
Eigenschaft            Typ                                                           Beschreibung
                        ...
Prozeduren, Funktionen

     Name                                                                        Deklaration/Besch...
Ereignisse

           Eigenschaft                                                         Deklaration/Beschreibung
Error ...
Zeichnen von Linien, Kurven, Rechtecke und Kreise

Zeichenelemente wie Linien, Kurven, Rechtecke und Kreise werden mit Hil...
'   Lines and curves script
'   Part of fly2pdf
'   Version: 1.0.0.0
'   Author: Frank Heindörfer
'   Comments: This scrip...
Bilder

Bilder (hier geht ausschlißlich um Bitmap-Bilder) werden ebenfalls über das Inhalts-Objektes
gezeichnet. Dabei ist...
Nächste SlideShare
Wird geladen in …5
×

Fly2pdf

311 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, Sport
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
311
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Fly2pdf

  1. 1. Dokumentation zu fly2pdf 0.) Vorwort Dies ist der erste Versuch einer Dokumentation für die Bibliothek fly2pdf. Grundsätzlich wurde versucht so dicht wie möglich an den PDF-Spezifikationen zu programmieren. Ein Studium der aktuellen Version wird deshalb empfohlen. Zur Demonstration wird die Sprache VBScript des „Windows Scripting Host“ verwendet. Das ermöglicht das Testen der Bibliothek auf allen Windows-Systemen auf denen dieser installiert ist. Er ist kostenlos bei Microsoft erhältlich und auf den meisten Rechnern vorinstalliert. 1.) Die Bibliothek Die Bibliothek besteht aus vielen Objekten. Das wichtigste Objekt ist das Dokument-Objekt. Dieses Objekt muss man sich als einen Container vorstellen, der unterschiedliche andere Objekte wie z.B. Seiten, Schriftarten, Inhaltsverzeichnisse, eingebettet Dateien, Anmerkungen, Aktionen, Hyperlinks usw. enthalten kann und diese miteinander verknüpft.. Erzeugt wird ein Dokument wie folgt: ' Erstellen eines Dokument Objektes Set doc = WScript.CreateObject(quot;fly2pdf.clsDocumentquot;, quot;fly2pdf_quot;) Der zweite Parameter fly2pdf_ definiert den Prefix für die Ereignisse. Für viele Variablen sind Konstanten erforderlich. Alle verfügbaren Konstanten sind in der Datei Constants.vbs definiert. Zunächst schauen wir uns das minimalste Skript an um eine PDF-Datei mit einer Seite ohne Text mit Hilfe fly2pdf zu erzeugen. ' Erstellen eines Dokument Objektes (auf Ereignisse wird ' verzichtet). Set doc = WScript.CreateObject(quot;fly2pdf.clsDocumentquot;) ' Erstellen eines Seiten Objektes – Es werden die Standard- ' einstellungen verwendet – also A4. Set page = Wscript.CreateObject(quot;fly2pdf.clsPagequot;) ' Die Seite wird dem Dokument hinzugefügt. doc.AddObject (page) ' Die PDF-Datei wird erzeugt. doc.CreateFile(quot;OnePage.pdfquot;) Um einen Text auf eine Seite zu plazieren, müssen wir folgendes tun. Wir fügen eine Seite, eine Schriftart und einen Text dem Dokument hinzu und verknüpfen dann den Text mit der Seite (oder anders gesagt, wir plazieren den Text auf die Seite).
  2. 2. ' Erstellen eines Schriftart(Font)-Objektes Set font = WScript.CreateObject(quot;fly2pdf.clsFontquot;) ' Festlegen der Schriftart-Types. font.FontSubType = eFontSubType_Type1 ' Als Schriftart wird Helvetica gewählt. font.Name = eFontType1_Helvetica ' Die Schriftart wird dem Dokument hinzugefügt. doc.AddObject (font) ' Erstellen eines Seiten-Objektes Set page = WScript.CreateObject(quot;fly2pdf.clsPagequot;) ' Die Seite wird dem Dokument hinzugefügt. pID = doc.AddObject((page)) Im Augenblick werden nur die 14 Basisschriftarten (Type1-Schriftart) unterstützt. TrueType- Schriftarten sind nicht möglich. Aus diesem Grund kann nur die Konstante eFontSubType_Type1 für die Variable gewählt font.FontSubType werden. In der Variablen pID wird die interne ID eines Seiten-Objektes gespeichert. Diese ID wird später benötigt um ein Inhaltsobjekt auf eine Seitenobjekt zu plazieren. Auch die ID des hinzugefügten Seiten-Objektes wird in einer ID gespeichert. Um einen Text auf eine Seite zu plazieren, muss ein Inhalts-Objekt (content object) dem Dokument hinzugefügt werden. Ein Inhalts-Objekt selbst kann verschieden Funktions-, Zeichen- und Text-Objekte enthalten. Eines davon ist das Text-Objekt. Es gibt jedoch noch viele andere Inhalts-Objekte. Wurde eine Schriftart dem Dokument noch nicht hinzugefügt, so passiert dies spätestens beim Hinzufügen des ersten text-Objektes innerhalb eines Inhaltsobjektes. ' Erstellen eines Inhalts(content)-Objektes Set cont = WScript.CreateObject(quot;fly2pdf.clsContentquot;) ' Ein TextBox-Object wird innerhalb eines Inhalts-Objektes ' erstellt. cont.Text quot;Hello world.quot;, (font), 12, 50, 100 ' Das Inhalts-Objektes wird dem Dokument hinzugefügt. contID = doc.AddObject((cont)) ' Das Inhalts-Objektes wird mit Seite verknüpft. doc.AddObjectToPage CLng(pID), CLng(contID) Alle Parameter des Text-Objektes können in der fly2pdf.xml Datei nachgelesen werden. Zum Schluss wird das Inhalts-Objekt zum Seiten-Objekt hinzugefügt. Jetzt kann das PDF-Dokument erstellt. Dafür verwenden wir die Funktion Create des Dokument- Objektes. ' Erzeugen der PDF-Datei doc.Create(quot;HelloWorld.pdfquot;) Das ganze nun als komplettes VBSkript. Im Gegensatz zu den Beispielen werden in diesem Skript alle Konstanten mit implementiert. Die Beispiel-Skripte sind als Windows Scripting Host Dateien
  3. 3. erstellt wurden, weil sich so Include-Dateien verwenden lassen und sich die Übersichtlichkeit wesentlich erhöht. ' HelloWorld script ' Part of fly2pdf ' Version: 1.0.0.0 ' Author: Frank Heindörfer ' Comments: This script creates a pdf file with the sentence ' 'Hello world.' using the activex dll fly2pdf. Option Explicit Const eFontSubType_Type1 = 1, eFontType1_Helvetica = 4 Dim fso, Scriptname, ScriptBasename Dim doc, font, page, cont, pID, contID Set fso = CreateObject(quot;Scripting.FileSystemObjectquot;) Scriptname = fso.GetFileName(Wscript.ScriptFullname) ScriptBasename = fso.GetFileName(Wscript.ScriptFullname) Set doc = Wscript.CreateObject(quot;fly2pdf.clsDocumentquot;, quot;fly2pdf_quot;) Set page = Wscript.CreateObject(quot;fly2pdf.clsPagequot;) pID = doc.AddObject((page)) Set font = Wscript.CreateObject(quot;fly2pdf.clsFontquot;) font.FontSubType = eFontSubType_Type1 font.Name = eFontType1_Helvetica Set cont = Wscript.CreateObject(quot;fly2pdf.clsContentquot;) cont.Text quot;Hello world.quot;, (font), 12, 50, 100 contID = doc.AddObject((cont)) doc.AddObjectToPage CLng(pID), CLng(contID) doc.CreateFile(fso.GetBaseName(ScriptBasename) & quot;.pdfquot;)
  4. 4. Das Dokument-Objekt Beschäftigen wir uns etwas näher mit dem Dokument-Objekt, da es das zentrale Objekt von fly2pdf ist. Um Eigenschaften und Methoden des Dokument-Objektes zu erforschen, verwenden die zur wir entweder einen Objekt-Browser (Gibt es standardmäßig bei Visual Basic oder MS Office mit dazu.)
  5. 5. Eigenschaften Eigenschaft Typ Beschreibung CancelCreation Boolean Bricht die Erstellung des Dokumentes ab. DocumentID1, String Legt die beiden Dokumenten-IDs einer PDF-Datei fest. Diese werden standardmäßig erzeugt, wenn die Eigenschaft UseDocumentID = DocumentID2 TRUE gesetzt wird. Die DocmentID wird dazu verwendet um eine PDF-Datei eindeutig zu machen, obwohl ihr Inhalt möglicherweise gleich aussieht. Encryption clsEncryption Fügt dem Dokument-Objekt ein Verschlüsselungs-Objekt hinzu, damit eine verschlüsselte PDF-Datei erstellt werden kann. OpenAction clsOpenAction Legt eine Aktion fest, die beim Öffnen einer PDF-Datei vom Anzeigeprogramm ausgeführt werden soll. (Falls das entsprechende Anzeigeprogramm dies unterstützt.) PageMode Long Legt eine Ansicht fest, die beim Öffnen einer PDF-Datei vom Anzeigeprogramm ausgeführt werden soll. (Falls das entsprechende Anzeigeprogramm dies unterstützt.) Der Standardwert ist -1, dass bedeutet das PageMode bei der Erstellung der PDF-Datei keine Berücksichtigung findet. Möglich Konstanten sind: ePageMode_UseNone = 0 ' Keine spezielle Ansicht ist definiert. ePageMode_UseOutlines = 1 ' Zeige ein vorhandenes Inhaltsverzeichnis an. ePageMode_UseThumbs = 2 ' Zeige eine kleine Bildervoschau aller Seiten. ePageMode_FullScreen = 3 ' Öffnet das Dokument in der Vollbildanzeige. Separator String Legt das bzw. die Trennzeichen fest. Standardmäßig ist dies ein „Carriage Return“ - CR. Es kann jedoch auch ein „Carriage Return Line Feed“ - CRLF festgelegt werden, um eine PDF-Datei besser in einem Texteditor anzeigen lassen zu können. StreamEncoding Collection Legt die Standardkodierung für interne PDF-Streams fest. Möglich Konstanten sind: eEncoding_NoEncoding = 0 ' Keine kodierung verwenden. eEncoding_ASCIIHexEncode = 1 ' ASCII-Hex-Kodierung wird verwendet. eEncoding_ASCII85Encode = 2 ' ASCII85-Kodierung wird verwendet. eEncoding_RunLengthEncode = 3 ' RLE-Kodierung wird verwendet. eEncoding_FlateEncode = 4 ' Zip-Kodierung wird verwendet. Dafür muss die freie ' zlib-Bibliothek (zlib.dll) im Pfad vorhanden sein. UseDocumentID Boolean Wird dieser Wert auf TRUE gesetzt, wird eine DokumentID verwendet. ViewerPreferences clsViewerPreferences Hier können Eigenschaften des Anzeigeprogrammes festgelegt werden. (Falls das entsprechende Anzeigeprogramm dies unterstützt.) Public HideToolbar As Boolean ' True: Versteckt die Werkzeugleiste des Anzeigeprogrammes. Public HideMenubar As Boolean ' True: Versteckt das Menü des Anzeigeprogrammes. Public HideWindowUI As Boolean ' True: Versteckt alle grafischen Elemente des
  6. 6. Eigenschaft Typ Beschreibung ' Anzeigeprogrammes. Public FitWindow As Boolean ' True: Passt die erste Seite des Dokumentes an das Fenster ' des Anzeigeprogrammes an. Public CenterWindow As Boolean ' True: Zentriert das Fenster des Anzeigeprogrammes auf ' dem Bildschirm. Public NonFullScreenPageMode As Long ' True: Öffnet das Dokument nicht in der ' Vollbildanzeige. Public Direction As Long ' Legt die Leserichtung des Dokumentes fest. ' 0: Von Links nach Rechts. ' 1: Von Rechts nach Links. Version String Legt die Version einer PDF-Datei fest. Standardmäßig verwendet fly2pdf die Version 1.3. Dies hat jedoch mehr symbolisch Charakter, da fly2pdf nicht alle Spezifikationen der Version 1.3 unterstützt. Andererseits werden bereits Merkmale neuer Versionen enthalten sind.
  7. 7. Prozeduren, Funktionen Name Deklaration/Beschreibung AddObject Public Function AddObject(Obj As Object) As Long Fügt dem Dokument-Objekt ein Objekt zu. Zurückgegeben wird die interne ID des hinzugefügten Objektes. Diese wird für Verknüpfungen benötigt. Möglich Objekte sind: clsAnnotation ' Anmerkungs-Objekt clsContent ' Inhalts-Objekt (kann selbst wiederum viele Objekte enthalten) clsFont ' Schriftart-Objekt clsPage ' Seiten-Objekt AddObjectToPage Public Sub AddObjectToPage(PageID As Long, ObjID As Long) Verknüpft ein Objekt mit einer Seite. CreateFile Public Function CreateFile(Filename As String, Optional DontCreate As Boolean, Optional Linearization As Boolean) As Long Erstellt die PDF-Datei. Filename ' der Dateiname DontCreate ' Die Erstellung der Datei wird abgearbeitet. Es wird jedoch keine Datei gespeichert. ' Nützlich um die Größe der Datei zu erfahren ohne sie zu erstellen. Linearization ' Soll das PDF-Objekt linearisiert gespeichert werden. Diese Option wird noch NICHT ' unterstützt. CreateByteArray Public Function CreateByteArray(ByRef PDFByteArray() As Byte, Optional Linearization As Boolean) As Long Erzeugt ein Byte-Feld, dass die Daten der PDF-Datei enthält. Es wird keine Datei erstellt. PDFByteArray()' Feld, dass die daten enthält Linearization ' Soll das PDF-Objekt linearisiert gespeichert werden. Diese Option wird noch NICHT ' unterstützt.
  8. 8. Ereignisse Eigenschaft Deklaration/Beschreibung Error Public Event Error(ID As Long, Description As String) Löst ein Fehlereignis aus. ID enthält die Fehlerkennung, Description die Beschreibung. Mögliche Fehler sind: -1 Die zu erzeugende Datei ist in Verwendung. Progress Public Event Progress(ID As Long, ProgressMessage As String, ProgressValue As Long, ProgressMax As Long) Löst ein Fortschrittsereignis aus. ID enthält die Fortschrittskennung, ProgressMessage die Fortschrittsbeschreibung, ProgressValue den aktuellen Fortschrittswert und ProgressMax den maximalen Fortschrittswert. Mit Hilfe von ProgressValue und ProgressMax können so prozentuale Angaben über den Fortschritt während der Erstellung eines Dokumentes gemacht werden.
  9. 9. Zeichnen von Linien, Kurven, Rechtecke und Kreise Zeichenelemente wie Linien, Kurven, Rechtecke und Kreise werden mit Hilfe des Inhalts-Objektes gezeichnet. Einige wichtige Funktionen des Inhaltsobjektes sind: Zeichnen einer Linie. Public Sub LineFromTo(X1 As Double, Y1 As Double, X2 As Double, Y2 As Double) Zeichnen einer Bezier-Kurve. Public Sub Bezier(X1 As Double, Y1 As Double, X2 As Double, Y2 As Double, X3 As Double, Y3 As Double) Zeichnen eines Rechteckes. Public Sub Rectangle(x As Double, Y As Double, Width As Double, Height As Double) Zeichnen einer Ellipse. Public Sub Ellipse(x As Double, Y As Double, rh As Double, rv As Double) Zeichnen ausführen (ohne diesen Befehl wird kein Element auf eine Seite gezeichnet). Mit dem Zeichenstil wird der die Art der Linie festgelegt. Public Sub Draw(DrawStyle As Long) Zeichenfarbe festlegen. Public Sub StrokeColor(Color As OLE_COLOR) Füllfarbe festlegen. Public Sub FillColor(Color As OLE_COLOR) Viele weitere Funktionen stehen zur Verfügung und können im Objektkatalog nachgeschlagen werden. Das nächste Beispiel demonstriert einige Funktionen.
  10. 10. ' Lines and curves script ' Part of fly2pdf ' Version: 1.0.0.0 ' Author: Frank Heindörfer ' Comments: This script creates a pdf with some lines and curves ' using the activex dll fly2pdf. Option Explicit Const eDrawStyle_FillStroke = 4, eDrawStyle_Stroke = 6 Dim fso, ScriptBasename Dim doc, page, cont, pID, contID Dim yo1, yo2 Set fso = CreateObject(quot;Scripting.FileSystemObjectquot;) ScriptBasename = fso.GetFileName(Wscript.ScriptFullname) Set doc = Wscript.CreateObject(quot;fly2pdf.clsDocumentquot;) Set page = Wscript.CreateObject(quot;fly2pdf.clsPagequot;) pID = doc.AddObject((page)) yo1 = page.Layout.InnerHeight Set cont = Wscript.CreateObject(quot;fly2pdf.clsContentquot;) With cont .StrokeColor RGB(64, 64, 64) .FillColor RGB(64, 64, 64) .DrawWidth 1 yo2 = 50 .Arrow 0, yo1 - yo2, 50, yo1 - yo2 .Arrow 0, yo1 - yo2 - 10, 0, yo1 - yo2 + 10 .Draw eDrawStyle_FillStroke .MoveTo 0, yo1 - yo2 .StrokeColor RGB(192, 0, 0) .Bezier 20, yo1 - yo2 - 20, 20, yo1 - yo2 + 20, 40, yo1 - yo2 .Draw eDrawStyle_Stroke .FillColor vbGreen .StrokeColor vbRed .Rectangle 85 - 20, yo1 - yo2 - 20, 40, 40 .Draw eDrawStyle_Stroke .Ellipse 85, yo1 - yo2, 20, 20 .Draw eDrawStyle_FillStroke .Ellipse 145, yo1 - yo2, 20, 10 .Draw eDrawStyle_Stroke .DrawWidth 0 .StrokeColor vbBlack .LineFromTo 130, yo1 - yo2, 144, yo1 - yo2 .LineFromTo 146, yo1 - yo2, 160, yo1 - yo2 .LineFromTo 145, yo1 - yo2 - 8, 145, yo1 - yo2 - 1 .LineFromTo 145, yo1 - yo2 + 8, 145, yo1 - yo2 + 1 .Draw eDrawStyle_Stroke End With contID = doc.AddObject((cont)) doc.AddObjectToPage (pID), (contID) doc.CreateFile(fso.GetBaseName(ScriptBasename) & quot;.pdfquot;)
  11. 11. Bilder Bilder (hier geht ausschlißlich um Bitmap-Bilder) werden ebenfalls über das Inhalts-Objektes gezeichnet. Dabei ist zu beachten das JPEG-Bilder direkt importiert werden können. Normalerweise werden Bilder in ihre RGB-Anteile zerlegt und entsprechend des vorgegeben Kodierungsverfahrens gespeichert. Da das PDF-Format den direkten Import von JPEG-Bildern erlaubt, ist es möglich diese auch direkt in eine PDF zu importieren (dies hat nichts mit der Einbettung von Dateien über Anmerkungen zu tun). Es ist aber auch möglich JPEG-Bilder neu zu kodieren und das wiederum mit der Kodierungsart „DCTEncoding“ was einer erneuten JPEG-Komprimierung entspricht. Dies kann zu einer weiteren Verringerung der Dateigröße führen. Zeichnen eines Bildes. Public Sub Image(FilenameOrHDC As Variant, x As Double, y As Double, Width As Double, Height As Double, Optional Encoding As Variant, Optional JPEGDirect As Boolean = True) Parameter Beschreibung FilenameOrHDC Ein Dateiname oder ein HDC (Handle eines Device Context) x, y Linke untere Adresse des Bildes Width, Height Höhe und Breite des Bildes Encoding Kodierungsart: Möglich Kodierungen sind: NoEncoding = keine Kodierung ASCIIHexEncode = ASCII-Hex-Kodierung ASCII85Encode = ASCII85-Kodierung RunLengthEncode = RLE-Kodierung FlateEncode = ZIP-Kodierung DCTEncode = DCT-Kodierung Encoding ist vom Typ Variant und kann statt eines einzelnen Parameters (vom Typ Long) auch genauso eine Collection. Dadurch sind mehrstufige Kodierungen möglich (also erst DCTEncode dann ASCII85Encode). Für Umgebungen die den Datentyp Collection nicht unterstützen, wurde die Klasse clsCollection implementiert. JPEGDirect Soll ein JPEG-Bild direkt in eine PDF-Datei eingebettet werden.

×