18. Modul PSOUT - PostScript (PDF,JPEG,TIF) schreiben

18.1. Allgemeines

Mit dem Modul PSOUT können Objekte in eine PostScript Datei geschrieben werden. Mit Zusatzsoftware - kommerzielle, Freeware, Shareware - wie zum Beispiel GhostScript kann eine PostScript Datei in ein anderes Format wie PDF, JPEG, TIF, etc. transferiert werden.

Der Modul wird mit:

|INCL \script\psout.mod

in einer ICS Konfiguration verfügbar gemacht.

[Anmerkung]

Der Modul ist nicht mit RUN1 kompatibel und muss daher zusammen mit der speziellen .prg Datei \script\il2ps\il2ps.prg verwendet werden.

18.2. Abhängigkeiten von anderen Modulen

Für Plot Layout Elemente wie Titelblatt, Koordinatenkreuze, etc. ist das Verarbeitungsmodul PLOT einzubeziehen. Mehr dazu in der Dokumentation des Modules PLOT.

18.3. Parametermap PSOUT_PARAM

Folgende Parameter können in der Map PSOUT_PARAM für den Modul gesetzt werden:

Parameterreq/optBeschreibung
FILE_FORMATops, pdf, jpg, tif oder tif_tfw. Definiert das Dateiformat für den Output. Beim Typ tif_tfw wird zusätzlich zur TIF-Datei noch eine TFW-Datei erzeugt.
ORIGINo<x>/<y>.Definiert der Ursprung in Koordinaten unten links der Daten für den Output. Bei der Verwendung des Modules PLOT.MOD wird dieser Parameter mit PLOT_PARAM.ORIGIN überschrieben.
ANGLEo<r>.Definiert den Drehwinkel der Daten für den Output. Bei der Verwendung des ModulesPLOT.MOD wird dieser Parameter mit PLOT_PARAM.ANGLE überschrieben.
SCALEo1:<scale>, Default = 1:500. Definiert den Massstab für den Output. Bei der Verwendung des Modules PLOT.MOD wird dieser Parameter mit PLOT_PARAM.SCALE überschrieben.
WIDTHo<m> . Definiert die Breite im Massstab 1:1 der Daten in Meter für den Output. Bei der Verwendung des Modules PLOT.MOD wird dieser Parameter mit PLOT_PARAM.WIDTH überschrieben.
HEIGHTo<m> .Definiert die Höhe im Massstab 1:1 der Daten in Meter für den Output. Bei der Verwendung des Modules PLOT.MOD wird dieser Parameter mit PLOT_PARAM.HEIGHT überschrieben.
PIXELSIZEo<r>, Default = 0.001. Definiert die Pixelgrösse eines Pixels für den Output. Ein positiver Wert definiert wieviele Meter der Daten im Massstab 1:1 einem Pixel entsprechen, z.B. eine Breite der Daten von 300 Metern und eine Pixelgrösse von 0.1 Meter ergibt einen Output mit einer Breite von 3000 Pixel. Ein negativer Wert definiert als Faktor, wie gross ein Pixel im Verhältnis zur gesamten Breite des Outputs ist, z.B. -0.001 ergibt einen Output mit einer Breite von 1000 Pixel. Der Parameter wird bei der Verwendung des Modules PLOT.MOD für einen PLOT_PARAM.TYPE => RASTER berücksichtigt.
PDF_DATA_FORMATojpg oder OFF, Default OFF. Definiert das Daten Format innerhalb eines PDF's bei einem Output Format PDF. Das heisst, die Daten im PDF-File werden als JPG eingebettet.
PDF_DATA_RESOLUTIONo<dpi>, Default = 300. Definiert die Auflösung der Daten als dots per inch innerhalb eines PDF's bei einem Output Format PDF, falls als Daten Format auf jpg gesetzt ist.
SYMBOLOGY[<n>]o<Symbology-Library>, Default = ''. Mit diesem Parameter können eine oder mehrere Signatur-Bibliotheken definiert werden. Signatur-Bibliotheken sind INTERLIS Dateien die Signaturen entsprechend dem INTERLIS Modell Symbology.ili beinhalten. Mehr dazu unter dem Abschnitt zu Signaturen. Bei der Verwendung mehrerer Signatur-Bibliotheken muss man dem Parameternamen eine fortlaufende Nummer beginnend mit 1 anfügen.
STROKE_TOLERANCEo<r>, Default = 0.001. Definiert die Toleranz wie Kreisbögen in Liniensegmente aufgelöst werden sollen. Der Wert ist identisch mit dem Argument für die Methode ICS.STROKE.
GS_LIBo<Path>, Default = ''. Für die Transformation der PostScript Files in ein anderes Format PDF,JPG,TIF,etc. ist der Modul vorbereitet, dies mit dem Shareware Produkt GhostScript der Firma Aladdin Enterprises auszuführen. Dazu müssen Sie das Produkt GhostScript vom Internet laden und installieren. Mit diesem Parameter definieren Sie das Installationsverzeichnis des Produktes GhostScript. Falls der Parameter nicht gesetzt ist, wird das Installationsverzeichnis von GhostScript noch nach folgener Reihenfolge gesucht: 1.Verzeichnis definiert mit der Umgebungsvariable GS_LIB. 2. Annahme GhostScript ist unter ILTOOLS_DIR\redist\gs_x86 installiert.
DEBUGoON oder OFF, Default = OFF. Debugmodus ein oder aus.
STATISTICSoON oder OFF, Default = OFF. Statistik anzeigen.

18.4. Symbole Clippen

Mit der optionalen Map PSOUT_SYMBOL_CLIP können Freistellflächen für Symbole definiert werden. Diese Map beinhaltet folgende Definitionen:

MAP PSOUT_SYMBOL_CLIP
   ...
   <symbol> => <ON|OFF>,[<color>],[<rand>],[<priority>],[<clipsymbol>],[<clipsymbolscale>]
   ...
   DEFAULT  => <ON|OFF>,[<color>],[<rand>],[<priority>],[<clipsymbol>],[<clipsymbolscale>]
END_MAP

<symbol>

Required. Definiert das Symbol für welches die Definition gilt. Mit dem Eintrag DEFAULT kann eine Definition für alle anderen Symbole definiert werden.

<ON|OFF>

Required. Definiert ob das Symbol geclipt werden soll oder nicht.

<color>

Optional. Definiert die Farbe für die Clip-Fläche. Default=white.

<rand>

Optional. Definiert einen zusätzlichen Rand für die Clip-Fläche. Default=0.0.

<priority>

Optional. Definiert eine Priorität für die Clip-Fläche. Default=identische Priorität wie die Priorität des <symbol>.

<clipsymbol>

Optional. Definiert ein Symbol für die Clip-Fläche. Default=kein Clipsymbol. Die Clip-Fläche wird aus dem Symbol bestimmt. Soll ein anderes Symbol als Clip-Fläche verwendet werden, so ist hier das enstprechende Symbol einzutragen..

<clipsymbolscale>

Optional. Definiert eine Scalierung für die Clipp-Fläche, die aus dem <clipsymbol> bestimmt wird. Default=identische Skaliering wie die Skalierung des <symbol>. Diese Skalierung skaliert die Skalierung des <symbol>. Diese Skalierung ist keine absolute Skalierung, sondern eine relative Skalierung des bereits skalierten Symbols <symbol> .

Beispiel einer Definition:

MAP PSOUT_SYMBOL_CLIP
   ! <symbol> => <ON|OFF>,[<color>],[<rand>],[<priority>],[<clipsymbol>],[<clipsymbolscale>]
   097055      => OFF ! Koordinatenkreuz
   DEFAULT     => ON
END_MAP

18.5. Signaturen

Siganturen (Symbole, Farben, etc.) können als Signatur-Bibliotheken von INTERLIS Dateien im Modell ILTOOLS_DIR\system\symb\Symbology.ili verwendet werden. Im demselben Directory sind diverse Beispiel solcher Signatur-Bibliotheken. Um Signatur-Bibliotheken zu erstellen, gibt es diverse Wege. In der Regel sind Signaturen wie zum Beispiel Symbole bereits in einem CAD-System vorhanden. Mit einer Konfiguration CAD-System zu INTERLIS können solche Symbole nach INTERLIS transferiert werden.

18.6. True Type Fonts

Einleitung

Sie können bei den Textelementen True Type Fonts verwenden.

Installation

Falls der True Type Font noch nicht in Windows installiert ist, installieren Sie den Font mit

Windows > Systemsteuerung > Schriftarten > Datei > Neue Schriftwart Installieren ...

Zum Beispiel die Cadastra Schriftarten, die unter

ICS_DIR\system\font

Ca.ttf

CadastraBd.ttf

CadastraIt.ttf

CaBI.ttf

CadastraSymbol.ttf

CadastraMask.ttf

abgelegt sind.

Namen

Bei der Verwendung der True Type Fonts in einer Konfiguration müssen Sie die Namen der Fonts wie folgt verwenden.

Beispiel Font:

Font Arial
True Type Font NameICS Konfiguration Name
ArialArial
Arial BoldArial-Bold
Arial ItalicArial-Italic
Arial Italic BoldArial-BoldItalic

Speziell beim Cadastra Font folgende Namen verwenden:

Font Cadastra
True Type Font NameICS Konfiguration Name
CadastraCadastra-Roman
Cadastra BoldCadastra-Bold
Cadastra ItalicCadastra-Italic
Cadastra Italic BoldCadastra-BoldItalic
CadastraSymbolCadastraSymbol
CadastraSymbol MaskCadastraSymbol-Mask

Mask

Fonts können maskiert werden. Verwenden Sie im Fontnamen den Suffix Masked.

Beispiel:

Arial-BoldMasked

Verwendung

Der Font wird wie folgt angewendet:

... => PSOUT_WRITE_TEXT12,IN.Objekt.Name,IN.Pos, IN.Ori,IN.HAli,IN.VAli,Arial-Bold,2.0,black,,0.0,0.06,4

18.7. GhostScript

Für die Transformation der PostScript Files in ein anderes Format PDF,JPG,TIF,etc. ist der Modul vorbereitet, dies mit dem Shareware Produkt GhostScript der Firma Aladdin Enterprises auszuführen. Dazu müssen Sie das Produkt GhostScript vom Internet laden und installieren. Mit dem PSOUT_PARAM.GS_LIB definieren Sie das Installationsverzeichnis des Produktes GhostScript. Falls der Parameter nicht gesetzt ist, wird das Installationsverzeichnis von GhostScript noch nach folgener Reihenfolge gesucht: 1.Verzeichnis definiert mit der Umgebungsvariable GS_LIB. 2. Annahme GhostScript ist unter ILTOOLS_DIR\redist\gs_x86 installiert.

18.8. Objektmodell

Allgemeine Komponenten für jedes OUT-Objekt
Komponentereq/optBeschreibung
OUT.TYPE(s) r

Typ des Objekts.

OUT.PRIORITY(i) r

Priorität des Objekts. Ein Objekt mit der Priorität n wird über ein Objekt mit der Priorität n-1 gezeichnet.

OUT.COLOR(i) o

Farbe des Objekts. Integer als RGB Werte in der Form (R*256*256) + (G*256) + B wobei R,G oder B einen Wert von 0 bis 255 aufweist.

Zusätzliche Komponenten für OUT.TYPE = 'POLYLINE'
Komponentereq/optBeschreibung
OUT.GEOM(l)rLinien-Geometrie des Objekts.
OUT.LSTYLE(s)oLinestyle des Objektes. Unterstützt werden continuous, dotted, dashed, dash.dot, dash.dot.dot, dot.dash.dash.
OUT.WIDTH(r)oBreite des Objekts.
Zusätzliche Komponenten für OUT.TYPE = 'POLYGON'
Komponentereq/optBeschreibung
OUT.GEOM(a)rFlächen-Geometrie des Objekts.
Zusätzliche Komponenten für OUT.TYPE = 'TEXT'
Komponentereq/optBeschreibung
OUT.GEOM(p)rPunkt-Geometrie des Objekts.
OUT.TXT(s)rText des Objekts.
OUT.FONT(s)rFont des Objekts. z.B. Helvetica, Helvetica-Oblique, Helvetica-Bold, Helvetica-BoldOblique, etc. Mit dem Suffix Masked zum Font kann definiert werden, dass der Font "maskiert" (d.h. freigestellt) werden soll.
OUT.ROT(r)oOrientierung des Objekts.
OUT.HEIGHT(r)oHöhe des Objekts.
OUT.HEIGHT(r)oHöhe des Objekts.
OUT.XSCALE(r)oHorizontale Streckung des Objekts.
OUT.SLANT(r)oSlant des Objekts.
OUT.HALI(i)oHorizontales Alignment des Objekts.
OUT.VALI(i)oVertikales Alignment des Objekts.
Zusätzliche Komponenten für OUT.TYPE = 'CLIP'
Komponentereq/optBeschreibung
OUT.GEOM(a)rFlächen-Geometrie des Objekts. In der Regel ist nur eine Clip-Fläche zu schreiben. Die Clip-Fläche definiert, welches Gebiet der Daten dargestellt werden soll. Die Clip-Fläche ist nur wirksam für Objekte, die eine höhere Priorität n+i als die Clip-Fläche n haben.

18.9. Exportierte Prozeduren und Methoden

ProzedurPSOUT_OPEN ! [s input][]
BeschreibungÖffnet eine neue PostScript Datei <input> und initialisiert den Modul. Die Prozedur wird on RUN1 automatisch aufgerufen.
Beispiel
'test.ps' PSOUT_OPEN
ProzedurPSOUT_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
PSOUT_CLOSE
ProzedurPSOUT_WRITE_POLYLINE5 ! l geometrie, s lstyle, s color, r width, i priority
BeschreibungSchreibt eine Linien-Geometrie. Die Prozedur erwartet 5 Argumente. Die Farbe color ist ein Stringwert einer Farbe in den mit PSOUT_PARAM.SYMBOLOGY[<n>] definierten Signatur-Bibliotheken. Der Wert von lstyle kann auch ein Pattern aufweisen. Ein Pattern wird definiert mit pattern(l1/l2/l3...) zum Beispiel pattern(5.0/0.5/0.5/0.5). Der 1. Eintrag im Pattern definiert die Länge des 1. Liniensegmentes. Der 2. Eintrag im Pattern definiert die Distanz vom Ende des 1. zum Anfang des 2. Lininesegment. Der 3. Eintrag im Pattern definiert die Länge des 2. Liniensegmentes. Der 4. Eintrag im Pattern definiert die Distanz vom Ende des 2. zum Anfang des 3. Lininesegment. Und so weiter bis zum Ende des Patterns, danach wiederholt sich das Pattern.
Beispiel
... => PSOUT_WRITE_POLYLINE5,IN.Geometrie,continuous,black,0.125.0,2
ProzedurPSOUT_WRITE_POLYGON3 ! a geometrie, s color, i priority
BeschreibungSchreibt eine Flächen-Geometrie. Die Prozedur erwartet 3 Argumente. Die Farbe color ist ein Stringwert einer Farbe in den mit PSOUT_PARAM.SYMBOLOGY[<n>] definierten Signatur-Bibliotheken.
Beispiel
... => PSOUT_WRITE_POLYGON3,IN.GEOM,ForestGreen,1
ProzedurPSOUT_WRITE_TEXT12 ! s text, p geometrie, rot rotation, i halignment, i valignment, s font, r height, s color, r xscale, r slant, r width, i priority
BeschreibungSchreibt einen Text. Die Prozedur erwartet 12 Argumente. Die color Farbe ist ein Stringwert einer Farbe in den mit PSOUT_PARAM.SYMBOLOGY[<n>] definierten Signatur-Bibliotheken. Der Font font ist ein PostScript-Font oder ein unter ILTOOLS_DIR\system\font\*.fd definierter Vektor-Font. Vektor-Fonts werden in Polylines aufgelöst und als Polylines geschrieben. Mit width kann bei solchen Vektor-Fonts die Breite der Polylines als Faktor zur Höhe height des Text definiert werden. Die Breite der Polyline ergibt sich aus height*width .
Beispiel
... => PSOUT_WRITE_TEXT12,IN.Objekt.Name,IN.Pos,
       IN.Ori,IN.HAli,IN.VAli,standard,2.0,black,,0.0,0.06,4
ProzedurPROCEDURE PSOUT_WRITE_SYMBOL7 ! p geometrie, rot rotation, s symbol, s color, r scale, r width, i priority
BeschreibungSchreibt ein Symbol. Die Prozedur erwartet 7 Argumente. Die Farbe color ist ein Stringwert einer Farbe in den mit PSOUT_PARAM.SYMBOLOGY[<n>] definierten Signatur-Bibliotheken. Das Symbol symbol ist ein Stringwert eines Symbols in den mit PSOUT_PARAM.SYMBOLOGY[<n>] definierten Signatur-Bibliotheken. Mit width wird die Breite der Polylines des Symbols als Faktor zur Skalierung scale des Symbols definiert. Die Breite der Polylines ergibt sich aus scale*width .
Beispiel
... => PSOUT_WRITE_SYMBOL7,IN.Geometrie,0.0,097041,black,1.0,0.1,3
ProzedurPROCEDURE PSOUT_WRITE_JPG6 ! a geometrie, r rotation, r width, r height, s image, i priority
BeschreibungSchreibt ein JPG-Bild. Die Prozedur erwartet 6 Argumente. Die Fläche geometrie für das Bild. Die Rotation rotation des Bildes. Die Breite width und Höhe height des Bildes. Das File image des Bildes.Der Pfad des Bildes kann absolut oder relativ zu ICS_DIR sein.
Beispiel
... => PSOUT_WRITE_JPG6,IN.Geometrie,IN.Ori,IN.Width,IN.Height,\plot\iglogo.jpg,-1003
ProzedurPSOUT_WRITE_CLIP2 ! a geometrie, i priority
BeschreibungSchreibt eine Clip-Flächen-Geometrie. Die Prozedur erwartet 2 Argumente. In der Regel ist nur eine Clip-Fläche zu schreiben. Die Clip-Fläche definiert, welches Gebiet der Daten dargestellt werden soll. Die Clip-Fläche ist nur wirksam for Objekte, die eine höhere Priorität n+i als die Clip-Fläche n haben.
Beispiel
... => PSOUT_WRITE_CLIP2,IN.Geometrie,-1001

18.10. Skriptbeispiel

! Diese ICS Konfiguration schreibt von ilin.mod
! gelesenen Objekte mit psout.mod in eine PostScript
! Datei und wandelt diese in ein PDF-File.

|LICENSE \license\iltoolspro.lic

MAP ILIN_PARAM
   INTERLIS_DEF => \models\dm01avch24d.ili
   LOG_TABLE => ON
   TRACE => OFF
   STATISTICS => ON
   CALC_SURFACE => ON
END_MAP

MAP ILIN_TOPO
   DEFAULT => OFF
END_MAP

MAP PSOUT_PARAM
   FILE_FORMAT       => pdf
   SYMBOLOGY1        => \symb\symbology.itf
   SYMBOLOGY2        => \symb\av.itf
   SYMBOLOGY3        => \symb\av2.itf
   GS_LIB            => c:\ghostscript
   STATISTICS        => ON
END_MAP

MAP PLOT_PARAM
   TYPE              => PLOT
   FORMAT            => A4
   FORMATORIENTATION => hoch
   ORIGIN            => '675855/245385'
   ANGLE             => 45.0
   SCALE             => '1:500'
   COORDCROSS        => ON
   COORDBAND         => ON
   SCALEBAND         => ON
   ADJUST            => ON
END_MAP

MAP PLOT_LAYOUT
   ! Format,hoch|quer,Massstab
   A0,quer,*   => \plot\a0q500.itf
   A0,hoch,*   => \plot\a0h500.itf
   A1,quer,*   => \plot\a1q500.itf
   A1,hoch,*   => \plot\a1h500.itf
   A2,quer,*   => \plot\a2q500.itf
   A2,hoch,*   => \plot\a2h500.itf
   A3,quer,*   => \plot\a3q500.itf
   A3,hoch,*   => \plot\a3h500.itf
   A4,quer,*   => \plot\a4q500.itf
   A4,hoch,*   => \plot\a4h500.itf
   DEFAULT     => \plot\a4h500.itf
END_MAP

MAP PLOT_COORDCROSS_WIDTH
   '1:250'     => 50.0
   '1:500'     => 50.0
   '1:1000'    => 50.0
   DEFAULT     => 100.0
END_MAP

MAP PLOT_SCALEBAND_WIDTH
   '1:250'     => 12.0
   '1:500'     => 20.0
   '1:1000'    => 40.0
END_MAP

MAP PLOT_VALUES
   PLOT_PARAM.SCALE  => OPT.massstab
   PLOT_DATE         => OPT.datum
   'Demogemeinde'    => OPT.gemeinde
END_MAP

MAP PLOT_WRITE_OBJECT
   Plot_Elemente,Border_Flaeche                    => OFF
   Plot_Elemente,Clipp_Flaeche                     => PSOUT_WRITE_CLIP2,IN.Geometrie,-1001
   Plot_Elemente,Flaeche                           => PSOUT_WRITE_POLYGON3,IN.Geometrie,white,-1005,PSOUT_WRITE_POLYLINE5,IN.Geometrie,continuous,black,0.05,-1004
   Plot_Elemente,Linie                             => PSOUT_WRITE_POLYLINE5,IN.Geometrie,continuous,black,0.05,-1004
   Plot_Elemente,Text                              => PSOUT_WRITE_TEXT12,IN.Text,IN.Geometrie,IN.Ori,IN.HAli,IN.VAli,IN.Font,IN.Height,black,,IN.Slant,,-1003
   Plot_Elemente,Bild                              => PSOUT_WRITE_JPG6,IN.Geometrie,IN.Ori,IN.Width,IN.Height,IN.Bild,-1003
   Plot_Elemente,Symbol_Linie                      => PSOUT_WRITE_POLYLINE5,IN.Geometrie,continuous,black,0.05,-1004
   Plot_Elemente,Symbol_Flaeche                    => PSOUT_WRITE_POLYGON3,IN.Geometrie,black,-1005

   Plot_Generiert,Koordinatenkreuz                 => PSOUT_WRITE_SYMBOL7,IN.Geometrie,IN.Ori,097055,black,IN.Scale,,100001
   Plot_Generiert,Koordinatenband_Linie            => PSOUT_WRITE_POLYLINE5,IN.Geometrie,continuous,black,0.05,100001
   Plot_Generiert,Koordinatenband_Text             => PSOUT_WRITE_TEXT12,IN.Text,IN.Geometrie,IN.Ori,IN.HAli,IN.VAli,Helvetica,IN.Height,black,,IN.Slant,,100001
   Plot_Generiert,Skalierungsband_Clipp_Flaeche    => PSOUT_WRITE_POLYGON3,IN.Geometrie,white,100001
   Plot_Generiert,Skalierungsband_Border_Linie     => PSOUT_WRITE_POLYLINE5,IN.Geometrie,continuous,black,0.05,100001
   Plot_Generiert,Skalierungsband_Block_Flaeche1   => PSOUT_WRITE_POLYLINE5,IN.Geometrie,continuous,black,0.05,100001
   Plot_Generiert,Skalierungsband_Block_Flaeche2   => PSOUT_WRITE_POLYGON3,IN.Geometrie,black,100001
   Plot_Generiert,Skalierungsband_Text             => PSOUT_WRITE_TEXT12,IN.Text,IN.Geometrie,IN.Ori,IN.HAli,IN.VAli,Helvetica,IN.Height,black,,IN.Slant,,100001
END_MAP

MAP INPUT_SOURCES
   I1 => ILTOPO,OPT.input
END_MAP

MAP INOUT
   I1 => IN.TOPIC,IN.TABLE
   I1,FixpunkteKategorie3,LFP3Pos => GD_T_1
   I1,FixpunkteKategorie3,LFP3Symbol => GD_S_1
   I1,* => OFF
END_MAP

MAP MACRO
   GD_S_1 => PSOUT_WRITE_SYMBOL7,IN.LFP3Symbol_von.Geometrie,IN.Ori,GP,black,0.6,,50
   GD_T_1 => PSOUT_WRITE_TEXT12,IN.LFP3Pos_von.Nummer,IN.Pos,IN.Ori,IN.HAli,IN.VAli,Helvetica,1.5,black,,15.0,,60
END_MAP

|INCL \script\plot.mod
|INCL \script\ilTOPO.mod
|INCL \script\psout.mod
|INCL \script\il2ps\il2ps.prg