SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
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).
' 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
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;)
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.)
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
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.
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.
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.
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.
'   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;)
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.

Mais conteúdo relacionado

Destaque

2013 Presentacion servicios Horizonte Cloud
2013 Presentacion servicios Horizonte Cloud2013 Presentacion servicios Horizonte Cloud
2013 Presentacion servicios Horizonte Cloudalomban
 
El fin de internet los ultimos dias de esta humanidad 2012
El fin de internet   los ultimos dias de esta humanidad 2012El fin de internet   los ultimos dias de esta humanidad 2012
El fin de internet los ultimos dias de esta humanidad 2012valoratealmaximo
 
Ratzeburger See
Ratzeburger SeeRatzeburger See
Ratzeburger Seekienspan
 
Un mundo cableado ensallo total
Un mundo cableado ensallo totalUn mundo cableado ensallo total
Un mundo cableado ensallo totalLili Sanchez
 
Precentacion en ppt de trabajo final
Precentacion en ppt de trabajo finalPrecentacion en ppt de trabajo final
Precentacion en ppt de trabajo finalysolt
 
Parkour
ParkourParkour
Parkourfosbe
 
Die Geschichte einer Entdeckung
Die Geschichte einer EntdeckungDie Geschichte einer Entdeckung
Die Geschichte einer Entdeckungfosbe
 

Destaque (20)

2013 Presentacion servicios Horizonte Cloud
2013 Presentacion servicios Horizonte Cloud2013 Presentacion servicios Horizonte Cloud
2013 Presentacion servicios Horizonte Cloud
 
El fin de internet los ultimos dias de esta humanidad 2012
El fin de internet   los ultimos dias de esta humanidad 2012El fin de internet   los ultimos dias de esta humanidad 2012
El fin de internet los ultimos dias de esta humanidad 2012
 
12
1212
12
 
BranchenThemen Textil Gesamtübersicht 2013
BranchenThemen Textil Gesamtübersicht 2013  BranchenThemen Textil Gesamtübersicht 2013
BranchenThemen Textil Gesamtübersicht 2013
 
M agnificat kairoi
M agnificat kairoiM agnificat kairoi
M agnificat kairoi
 
Prueba1
Prueba1Prueba1
Prueba1
 
Finanzas y agua
Finanzas y aguaFinanzas y agua
Finanzas y agua
 
Que lindo es_mi_cristo
Que lindo es_mi_cristoQue lindo es_mi_cristo
Que lindo es_mi_cristo
 
Ratzeburger See
Ratzeburger SeeRatzeburger See
Ratzeburger See
 
Power point2007
Power point2007Power point2007
Power point2007
 
Un mundo cableado ensallo total
Un mundo cableado ensallo totalUn mundo cableado ensallo total
Un mundo cableado ensallo total
 
Bewerber - Patentdatenbanken und Fachliteratur als Infoquelle einsetzen
Bewerber - Patentdatenbanken und Fachliteratur als Infoquelle einsetzenBewerber - Patentdatenbanken und Fachliteratur als Infoquelle einsetzen
Bewerber - Patentdatenbanken und Fachliteratur als Infoquelle einsetzen
 
Memoria humana
Memoria humanaMemoria humana
Memoria humana
 
infobroker-tv - Programm 6.Kalenderwoche 2010 - 08.02 - 12.02.2010
infobroker-tv - Programm 6.Kalenderwoche 2010 - 08.02 - 12.02.2010infobroker-tv - Programm 6.Kalenderwoche 2010 - 08.02 - 12.02.2010
infobroker-tv - Programm 6.Kalenderwoche 2010 - 08.02 - 12.02.2010
 
infobrokertv - Video-Stream Programm 7.KW 2010
infobrokertv - Video-Stream Programm 7.KW 2010infobrokertv - Video-Stream Programm 7.KW 2010
infobrokertv - Video-Stream Programm 7.KW 2010
 
Unternehmensberater - eine Branche sucht neue Wege - Branchen Kompakt
Unternehmensberater - eine Branche sucht neue Wege - Branchen KompaktUnternehmensberater - eine Branche sucht neue Wege - Branchen Kompakt
Unternehmensberater - eine Branche sucht neue Wege - Branchen Kompakt
 
Precentacion en ppt de trabajo final
Precentacion en ppt de trabajo finalPrecentacion en ppt de trabajo final
Precentacion en ppt de trabajo final
 
Parkour
ParkourParkour
Parkour
 
Ejercicio7
Ejercicio7Ejercicio7
Ejercicio7
 
Die Geschichte einer Entdeckung
Die Geschichte einer EntdeckungDie Geschichte einer Entdeckung
Die Geschichte einer Entdeckung
 

Semelhante a Fly2pdf

Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenSebastian Hempel
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabeMichael Konzett
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenChristian Münch
 
1.2 anweisungen, eigenschaften und operationen
1.2   anweisungen, eigenschaften und operationen1.2   anweisungen, eigenschaften und operationen
1.2 anweisungen, eigenschaften und operationenMichael Konzett
 
C# Workshop - File Operations
C# Workshop - File OperationsC# Workshop - File Operations
C# Workshop - File OperationsQiong Wu
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererUwe Printz
 
MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)Uwe Printz
 
Apple iOS - Daten
Apple iOS - DatenApple iOS - Daten
Apple iOS - Datenmesseb
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit antroskakori
 
Dojo Und Notes
Dojo Und NotesDojo Und Notes
Dojo Und Notesdominion
 
XML-Socket-Server zur Kommunikation mit Flash
XML-Socket-Server zur Kommunikation mit FlashXML-Socket-Server zur Kommunikation mit Flash
XML-Socket-Server zur Kommunikation mit FlashStephan Schmidt
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga
 
Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)Sebastian Adler
 

Semelhante a Fly2pdf (20)

Fly2pdf
Fly2pdfFly2pdf
Fly2pdf
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machen
 
3.1 dateiein- und ausgabe
3.1   dateiein- und ausgabe3.1   dateiein- und ausgabe
3.1 dateiein- und ausgabe
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
Codeblocks manual de_2012
Codeblocks manual de_2012Codeblocks manual de_2012
Codeblocks manual de_2012
 
1.2 anweisungen, eigenschaften und operationen
1.2   anweisungen, eigenschaften und operationen1.2   anweisungen, eigenschaften und operationen
1.2 anweisungen, eigenschaften und operationen
 
Einfuehrung in mongo_db_iks
Einfuehrung in mongo_db_iksEinfuehrung in mongo_db_iks
Einfuehrung in mongo_db_iks
 
C# Workshop - File Operations
C# Workshop - File OperationsC# Workshop - File Operations
C# Workshop - File Operations
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-Programmierer
 
MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)MongoDB für Java Programmierer (JUGKA, 11.12.13)
MongoDB für Java Programmierer (JUGKA, 11.12.13)
 
Apple iOS - Daten
Apple iOS - DatenApple iOS - Daten
Apple iOS - Daten
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
Node.js für Webapplikationen
Node.js für WebapplikationenNode.js für Webapplikationen
Node.js für Webapplikationen
 
Dojo Und Notes
Dojo Und NotesDojo Und Notes
Dojo Und Notes
 
MVVM Pattern
MVVM Pattern MVVM Pattern
MVVM Pattern
 
XML-Socket-Server zur Kommunikation mit Flash
XML-Socket-Server zur Kommunikation mit FlashXML-Socket-Server zur Kommunikation mit Flash
XML-Socket-Server zur Kommunikation mit Flash
 
Node.js
Node.jsNode.js
Node.js
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
SciflowWriter
SciflowWriterSciflowWriter
SciflowWriter
 
Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)Einstieg in Xpath für SEO (Campixx2021)
Einstieg in Xpath für SEO (Campixx2021)
 

Fly2pdf

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