Computervermittelte Kommunikation

cmclogo.gif

Kapitel 12: OSI-Schicht 6: Presentation Layer -- Datendarstellungsschicht

Teil I: Allgemeines, ASN.1, ASCII, ISO ISO 8859, UNICODE, ISO/IEC 10646, UCS, UTF, PostScript, Acrobat


von Margarete Payer

mailto: payer@hbi-stuttgart.de


Zitierweise / cite as:

Payer, Margarete <1942 -- >: Computervermittelte Kommunikation. -- Kapitel 12: OSI-Schicht 6: Presentation Layer -- Datendarstellungsschicht. -- Teil 1: Allgemeines, ASN.1, ASCII, ISO ISO 8859, UNICODE, ISO/IEC 10646, UCS, UTF, PostScript, Acrobat. -- Fassung vom 2001-01-21. -- URL: http://www.payer.de/cmc/cmcs1201.htm. -- [Stichwort].

Erstmals publiziert: 1995

Überarbeitungen: 23. Juni 1997; 16.6.1999 [grundlegende Neubearbeitung und Erweiterung]; 2001-01-21 [Verbesserung kleiner Fehler]

Anlass: Lehrveranstaltungen an der HBI Stuttgart

©opyright: Dieser Text steht der Allgemeinheit zur Verfügung. Eine Verwertung in Publikationen, die über übliche Zitate hinausgeht, bedarf der ausdrücklichen Genehmigung der Verfasserin.


Zur Inhaltsübersicht von Margarete Payer: Computervermittelte Kommunikation.


12.0. Übersicht



12.1. Merkmale der Datendarstellungsschicht


Die Datendarstellungsschicht dient dazu, die Daten so darzustellen, wie sie tatsächlich auf der Leitung übertragen werden sollen. Diese Darstellung muss nicht identisch sein mit der Darstellung auf der Anwendungsschicht.

Die Darstellungsschicht ist zuständig für:

Die Darstellungsschicht ist nur für die Syntax (die Darstellung der Daten) zuständig, nicht für die Semantik (d.h. die Bedeutung der Daten). Für die Semantik sind nur die Anwendungen zuständig. Die Darstellungsschicht soll gewährleisten, dass die Anwendungen Syntax-unabhängig miteinander kommunizieren können. Die Protokolle der Darstellungsschicht wandeln also die anwendungsspezifischen Syntaxe in eine gemeinsame Syntax um, sodass sich die Anwendungen nicht um die Kompatibilität ihrer Syntax zu kümmern brauchen.

Aufgaben der Datendarstellungsschicht:

Funktionen innerhalb der Datendarstellungsschicht:


12.2. Protokolle für die Datendarstellungsschicht


OSI Service Definition:
X.216 Presentation service definition
ISO 8822 Connection oriented presentation service definition
OSI Protocol Specification:
X.226 Presentation protocol specification
ISO 8823 Connection oriented presentation protocol specification
ISO 8824: Abstract Syntax Notation 1 (ASN.1)
LAN:
ISO 8822: Connection oriented presentation service definition
ISO 8823: Connection oriented presentation protocol specification
ISO 8824: Abstract syntax notation One (ASN.1)
ISO 8825: Basic encoding rules for ASN.1
Packet-switched data network:
X.216: OSI Presentation service definition note
Public-switched telephone network:
T.50: International reference alphabet -- 7-bit coded character set for information interchange
T.51: Latin based coded character sets for telematic services

12.3. ASN.1 -- Abstract Syntax Notation One


12.3.1. Weiterführende Ressourcen


Eine sehr klare Darstellung von ASN.1 ist in:

Stallings, William: Data and computer communications. -- 4. ed. -- London [u.a.] : Prentice Hall, 1994. -- 875 S. -- ISBN 0024154253. -- S. 639-672. -- {Wenn Sie HIER klicken, können Sie dieses Buch bei amazon.de bestellen}


12.3.2. Merkmale von ASN.1


ISO 8824 (CCITT/ITU X.208) -- Abstract Syntax Notation One (ASN.1)

ISO 8825 (CCITT/ITU X.209) -- Basic Encoding Rules (BER)

ASN.1 bietet eine Grammatik zur Definition von Datenstrukturen sowie Festlegungen zur Umsetzung von Datenstrukturen und Elementen in ein netzeinheitliches Format (Transfer Syntax).

ASN.1 hat sich weitgehend durchgesetzt bei der Entwicklung von OSI-bezogenen Standards und TCP/IP-bezogenen Standards. Man verwendet ASN.1 um das Format von mittels der Protokolle ausgetauschten Daten sowie die diesbezüglichen Operationen zu definieren.

Die ASN.1-Umwandlung kann bis zu 80% (!) des CPU-Aufwandes für ein Paket bis zur Applikation hin ausmachen. ASN.1 ist nicht flexibel, sodass eine Verbesserung durch übliche Techniken der Leistungssteigerung (z.B. Parallelverarbeitung) nicht möglich ist.

ASN.1 ist eine Notation zur Beschreibung


12.3.3. Grundbegriffe von ASN.1


12.3.3.1. Module


Der Grundbaustein einer ASN.1-Spezifikation ist das Modul (module).

ASN.1 kann benutzt werden, um Datenstrukturen zu definieren. Diese Definition geschieht in Form eines benannten Moduls. Der Name des Moduls wird dann zur Bezeichnung der Datenstruktur verwendet.

Struktur eines Modul:

<modulreference> DEFINITIONS::=
BEGIN
 EXPORTS
 IMPORTS
 AssignmentList
END

Erklärung:

modulreference:
Name des Moduls
EXPORTS:
Definitionen, die aus diesem Modul von anderen Modulen übernommen werden können
IMPORTS:
Definitionen, die aus anderen Modulen in dieses Modul übernommen werden sollen
AssignmentList:
Typen-Zuweisungen (type assignments), Wert-Zuweisungen (value assignments), Macrodefinitionen
Typen- und Wert-Zuweisungen haben die Form:

<name>::<description>


12.3.3.2. Darstellungs-Konventionen


ASN.1 types und values werden in einer Programmiersprache-artigen Notation dargestellt. Dabei gelten folgende Regeln:


12.3.3.3. Abstakte Daten-Typen (abstract data types)


Ein type ist eine Menge von Werten (values). Für einige types gibt es eine endliche Anzahl von möglichen Werten, für andere eine unendliche. Ein Wert ist umgekehrt ein Element der type-Menge.


Arten von types:

Types und Werten kann man mit mittels des ASN.1 assignement operators ::= einen Namen zuordnen. Dieser Name kann dann verwendet werden bei der Definition anderer types und Werte.

Jeder ASN.1 type außer CHOICE und ANY hat einen tag (Identifikator). Jeder tag besteht aus einer tag-classe und einer nicht-negativen tag-number.


Tag classes:


Universal types (Auswahl):


12.3.3.4. Beispiel der Definition einer Datenstruktur


Informelle Beschreibung eines persönlichen Datensatzes ASN.1 Beschreibung des nebenstehenden einzelnen Datensatzes (record value)
Name: John P Smith

Title: Director
Employee Number: 51
Date of Hire: 17 September 1971
Name of Spouse: Mary T Smith
Number of Children: 2



Child Information:
Name: Ralph T Smith
Date of Birth: 11 November 1957

Child Information:
Name: Susan B Jones
Date of Birth: 17 July 1959

{ {givenName "John", initial "P", familyName "Smith"},


title "Director"
number51
dateOfHire "19710917"
nameOfSpouse{givenName "Mary", initial "T", familyName "Smith"},


children
{ { {givenName "Ralph", initial "T", familyName "Smith"}
dateOfBirth "19571111"


{ {givenName "Susan", initial "B", familyName "Jones"}
dateOfBirth "19590717"}}}


ASN.1 Beschreibung der Struktur des obigen Datensatzes:

PersonelRecord ::= [APPLICATION 0] IMPLICIT SET {
 Name,
 title [0] VisibleString,
 number EmployeeNumber,
 dateOfHire [1] Date,
 nameOfSpouse [2] Name,
 children [3] IMPLICIT SEQUENCE OF ChildInformation DEFAULT {}}

ChildInformation ::= SET {
 Name,
 dateOfBirth [0] Date}

Name ::= [APPLICATION 1] IMPLICIT SEQUENCE {
 givenName VisibleString,
 initial VisibleString,
 familyName Visible String }

EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER

Date ::= [APPLICATION 3] IMPLICIT VisibleString -- YYYYMMDD

Erklärung im Einzelnen in

Stallings, William: Data and computer communications. -- 4. ed. -- London [u.a.] : Prentice Hall, 1994. -- 875 S. -- ISBN 0024154253. -- S. 651-653. -- {Wenn Sie HIER klicken, können Sie dieses Buch bei amazon.de bestellen}


12.3.3.5. BER -- Basic Encoding Rules


Die Basic Encoding Rules (BER) geben an, wie man einen ASN.1 value als Oktett-Reihe darstellen kann.

Es gibt drei Darstellungsmethoden. Die Wahl richtet sich nach der Art des value und danach, ob die Länge des value zuvor schon bekannt ist.

Bei jeder dieser Darstellungsmethoden hat die BER-Kodierung drei bzw. vier Teile:


12.4. Formate zum Austausch von Dokumenten


Es gibt viele Versuche, hard- und software-unabhängige Formate für Dokumente zu schaffen und durchzusetzen. Bisher herrscht aber immer noch Chaos, und ohne Umwandlungsprogramme kommt man kaum aus.


12.4.1. 7-Bit-Kodierung: ASCII-Text


ASCII (American Standard Code for Information Interchange) ist ein ISO (International Organization for Standardization) Standard (ISO/IEC 646). 

ASCII ist ein 8-Bit-Code:

Tabelle: US-ASCII (128 Zeichen) mit Hexadezimalkodierung ([ZeilenNr][SpaltenNr]): (A = 41; a = 61)

  0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 SP ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

Leider blieb es nicht bei US-ASCII, sondern es wurden regionale ASCIIs entwickelt, um z.B. die Umlaute zu kodieren. Dies führt zu den bekannten Problemen mit der Darstellung von Umlauten (die dann z.B. als "[" wiedergegeben werden). So gibt es folgende  ASCII-Varianten: International Reference Version (ISO 646.IRV), Deutschland (ISO 646.DE), Schweiz (ISO 646.CH), Französisch-Kanada (ISO 646.CA), Spanien (ISO 646.ES), Finnland (ISO 646.FI) , Frankreich (ISO 646.FR), Großbritannien (ISO 646.GB), Italien (ISO 646.NL), Norwegen/Dänemark (ISO 646.NO), Portugal (ISO 646.PT) , Schweden (ISO 646.SE), Korea (KS C 5363), China (GB 1988-80), Japan (JIS X 201). Alle sind nicht voll miteinander kompatibel. 

ASCII-Text kann von fast allen Textbearbeitungsprogrammen verwertet werden. ASCII erlaubt aber keine unterschiedlichen Schriften, Schriftarten, kompliziertere Textformatierungen, Grafiken, Farben. SGML, XML und HTML haben den großen Vorteil, dass ihre Kodierungen in reinem US-ASCII sind!


Weiterführende Ressourcen zu ASCII:

Yahoo Categories:


12.4.2. 8-Bit-Kodierung: ISO 8859, ISCII


Da moderne Computer weniger fehleranfällig sind als ältere Systeme, hat man das 8. Bit auch zur Zeichendefinition verwendet und Extended ASCII entwickelt, das 256 Zeichen und Steuerzeichen definiert. Diese 8-Bit-Kodierungen werden als ISO 8859-n international standardisiert.: 

ISO 8859-n Name Sprachspezifische Zeichensätze
ISO 8859-1 Latin-1 für Englisch, Dänisch, Niederländisch, Finnisch, Französisch, Deutsch, Isländisch, Irisch, Italienisch, Bahasa Malaysisch, Norwegisch, Portugiesisch, Spanisch, Schwedisch, Tagalog (Philippinen)
ISO 8859-2 Latin-2 für Albanisch, Tschechisch, Deutsch, Ungarisch, Polnisch, Rumänisch, Kroatisch, Slowakisch, Slowenisch, Schwedisch
ISO 8859-3 Latin-3 für Afrikaans, Katalanisch, Französisch, Galizisch, Italienisch, Maltesisch, Türkisch
ISO 8859-4 Latin-4 für Dänisch, Estnisch, Finnisch, Deutsch, Grönländisch, Lappisch, Litauisch, Norwegisch, Schwedisch. 

Jetzt ersetzt durch ISO 8859-10: Latin-6

ISO 8859-5 Latin/Cyrillic Bulgarisch, Belorussisch, Mazedonisch, Russisch, Serbisch, Ukrainisch
ISO 8859-6 Latin/Arabic Arabisch ohne Punktation
ISO 8859-7 Latin/Greek Griechisch
ISO 8859-8 Latin/Hebrew Hebräisch ohne Punktation 
ISO 8859-9 Latin-5 Finnisch, Französisch, Deutsch, Irisch, Italienisch, Norwegisch, Portugiesisch, Spanisch, Schwedisch, Türkisch
ISO 8859-10 Latin-6  Dänisch, Estnisch, Faroerisch, Finnisch, Deutsch, Grönländisch (Inuit), Isländisch, Lappisch (Samisch), Litauisch, Lettisch, Norwegisch, Schwedisch
ISO 8859-14 [Entwurf] Latin-7 Gälische Sprachen

Neun indische Hauptschriften (Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Kannada, Telugu, Malayalam) sind als ISCII (Indian Standard Codes for Information Interchange) in 8-Bit-Kode definiert (Indian Standard IS 13194:1991)..


Weiterführende Ressourcen zu ISO 8859:


12.4.3. UNICODE, ISO/IEC 10646, UCS, UTF


Um alle Zeichensätze der Welt, sowohl Alphabete, nichtalphabetische sprachbezogene Zeichen (z.B. Chinesisch) sowie Symbole, mathematische Operatoren, chemische Zeichen usw. zu kodieren, wurden zwei Standards entwickelt:

Die historische Abfolge ist:

ISO 10646 besteht aus zwei miteinander kompatiblen Kodierungsschemata:

  Beispiel "T" (ASCII 54)
 

binär kodiert

hexadezimal kodiert

UCS-2: Kodierung mit 2 Byte (16 Bit) 0000 0000 0101 0100

0054 = 54

UCS-4: Kodierung mit 4 Byte (32 Bit) 0000 0000 0000 0000
0000 0000 0101 0100

0000 0054 = 54

ISO 10646 ist kompatibel mit ISO 646 (US-ASCII) und ISO 8859 (Latin-1), d.h. die ersten 128 Zeichen haben (mit Ausnahme der führenden Nullen) in UCS dieselben Werte wie in US-ASCII., die ersten 256 Zeichen dieselben Werte wie  ISO 8859 (Latin-1).

Die Abwärtskompatibilität zeigt folgende Tabelle für die Kodierung von "A":

Standard Bits Binärkodierung Hexadezimal-Kodierung
ISO 646 (US-ASCII) 7 100 0001 41
ISO 8859-1 (Latin-1) 8 0100 0001  41
UCS-2, Unicode 16 0000 0000 0100 0001 41
UCS-4 32 0000 0000 0000 0000
0000 0000 0100 0001
41

Den Bytegruppen in UCS wurden folgende Namen zugeordnet:

0000 0000 (4. Byte) 0000 0000 (3. Byte) 0000 0000 (2. Byte) 0000 0000 (1. Byte)
group plane row cell

Da man eine UCS-2-Kodierung in UCS-4 als 00 00 xx xx darstellen kann, enthält UCS-2  alle Zeichen von group 00, plane 00 von UCS-4. Die plane von UCS-2 nennt man Basic Multilingual Plane (BMP). Es gibt noch keine Zeichensätze, die außerhalb von BMP kodiert sind.

Unicode und UCS sind voll kompatibel, d.h. jede Unicode-Kodierung ist identisch mit der entsprechenden UCS-2-Kodierung.

Die UCS-Kodierung kann, wenn sie viele Nullen enthält, sehr speicherfressend sein, deshalb entwickelte man UTF-8 (UCS Transformation Format, 8-bit form): Wenn der Hauptteil des Textes aus mit hohen Zahlen kodierten Zeichen besteht ist UTF-8 speicherfressender als UCS, bei niedrig kodierten Zeichen erspart es bis zu 25% Speicherplatz. Andere UTFs haben die unten angegebenen Funktionen.

UTF-8 (UCS Transformation Format, 8-bit form) (ISO/IEC 10646 AM1): benutzt 1 Byte für ASCII-Zeichen und 2 bis 6 Byte für die übrigen Zeichen Beispiel "T" (ASCII 54):

UCS-4: 

0000 0000 0000 0000
0000 0000 0101 0100

= Hex 00000054 = 54

UTF-8:

0101 0100 (d.h. alle führenden Nullen werden weggelassen)

= Hex 54

UTF-7 (UCS Transformation Format, 7-bit form): Unicode-Kodierung für Anwendungen, die das 8. Datenbit übergehen, z.B. e-mail nach dem SMTP (Simple Mail Transfer Protokol) des Internet (s. RFC 1642 : UTF-7 : A Mail-Safe Transformation Format of Unicode. -- URL: http://www.cis.ohio-state.edu/htbin/rfc/rfc1642.html. -- Zugriff am 14.6.1999). In MIME setzt man den character set identifier auf "UNICODE-1-1-UTF-7".
UTF-16 (UCS Transformation Format for Planes of Group 00): erlaubt es, unter UNICODE (UCS-2) Zeichen aus UCS-4 darzustellen (genau von 16 zusätzlichen planes); dies tut man, indem manche Werte reserviert sind, um auf höhere planes zu schalten.

Alle XML-Implementierungen müssen UTF-8 und UTF-16 unterstützen.

ASCII, UCS, UNICODE und UTF sind miteinander voll kompatibel. Ihr gegenseitiges Verhältnis zeigt folgende Grafik (nicht maßstabgetreu!):

Den Zeichensätzen werden in UCS bzw. Unicode zusammenhängende Bereiche zugeordnet, deren Größe vom Umfang des Zeichensatzes abhängt. Je vier Bit werden als Hexadezimalzahl (0 bis F) kodiert und als Kennzeichnung für Unicode U+ davor gesetzt. Bisher wurden ca. 39000 Zeichen kodiert, davon ca. 21000 chinesische Zeichen! 

In XML werden Unicode-Zeichen folgendermaßen kodiert:

&#x[Unicode Hexadezimalkodierung ohne führende Nullen];

Einige Beispiele, die das Prinzip klar machen sollen:

Lateinschrift Basic Latin: Bereich U+0000 bis U+007F

Zeichen Binärcode Hexadezimalcode XML Codierung Darstellung in UNICODE-fähigem Browser
A 0000 0000 0100 0001 U+0041 &#x41; A
B 0000 0000 0100 0010 U+0042 &#x42; B
% 0000 0000 0010 0101 U+0025 &#x25; %

Kyrillisch: Bereich U+0400 bis 04FF

Zeichen Hexadezimalcode XML Codierung Darstellung in UNICODE-fähigem Browser
cmc1201.gif (916 Byte)[a] U+0430 &#x430; а
cmc1202.gif (923 Byte)[b] U+0431 &#x431; б

 

cmc1203.gif (897 Byte)[v]

U+0432

&#x432;

в

Devanagari (Hindi und Sanskrit): Bereich U+0900 bis U+097F

Zeichen Hexadezimalcode XML Codierung
cmc1205.gif (1018 Byte)[a] U+0905 &#x905;
cmc1204.gif (1072 Byte)[â] U+0906 &#x906;
cmc1206.gif (965 Byte)[i] U+0907 &#x907;

Thai: Bereich U+0E00 bis U+0E7F

Zeichen Hexadezimalcode XML Codierung Darstellung in UNICODE-fähigem Browser
cmc1207.gif (904 Byte)[ng] U+0E07  &#xE07;
cmc1208.gif (906 Byte)[c] U+0E08 &#xE08;
cmc1209.gif (944 Byte)[ch] U+0E09 &#xE09;

Chinesisch: CJK Ideographs: Bereich U+4E00 bis U+9FA5

Zeichen Hexadezimalcode XML Codierung Darstellung in UNICODE-fähigem Browser

cmc1210.gif (982 Byte)[zhang = ein best. Längenmaß usw.]

U+4E08 &#x4E08;

cmc1211.gif (1057 Byte)[lin]

U+4E83 &#x4E83;

cmc1212.gif (989 Byte)[quan = Hund]]

U+72AC &#x72AC;

cmc1213.gif (1086 Byte)[wen = Fisch]

U+9B69 &#x9B69;

Etwas für Pharmakologen und Botaniker (nur mit UNICODE-fähigem Browser lesbar): 药 茶 莓 茉 莉 茄 菜 草

Die wichtigste und die schwierigste Aufgabe der Kodierung sind die chinesisch-japanisch-koreanisch-[klassisch-vietnamesischen] Ideographe. Einige wichtige Punkte in der Geschichte dieser Kodierung:

Mathematische Operatoren: U+2200 to U+22FF

Zeichen Hexadezimalcode XML Codierung
cmc1214.gif (895 Byte) U+221B &#x221B;
cmc1216.gif (897 Byte) U+222E &#x222E;
cmc1217.gif (879 Byte) U+22C2 &#x22C2;

Die gegenwärtig gültige Version des Unicode-Standards (2.1) unterstützt offiziell die im Folgenden genannten Schriften und Zeichensätze. Die Reihenfolge der Aufzählung entspricht der Abfolge in der Zuteilung der 16-Bit-Codes. Die Links verweisen auf Zeichentafeln mit der Kodierung der einzelnen Zeichen. (Zugriff auf alle Links am 11.6.1999).


Weiterführende Ressourcen zu UNICODE:

Organisationen:

Unicode Consortium. -- URL: http://www.unicode.org.. -- Zugriff am 11.6.1999 -- [Die Informationsquelle; sehr ergiebig!]

Ressourcen in Printform:

The Unicode Standard Version 2.0 / The Unicoder Consortium.  -- Reading [u.a.] : Addison-Wesley, ©1996. -- getrennte Zählung [960 S.] : Ill. + 1 CD-ROM. -- ISBN 0201483459. -- [Unerlässlich für jede Implementierung von UNICODE]. -- {Wenn Sie HIER klicken, können Sie dieses Buch bei amazon.de bestellen}


12.4.4. PostScript


PostScript ist eine von Adobe entwickelte und 1985 vorgestellte Layoutdefinitions-Sprache, die von vielen Softwarepaketen und Betriebssystemen unterstützt wird. PostScript erlaubt, kompliziert formatierte Dokumente mit unterschiedlichen Schriften, Schriftarten, Grafiken, Farben usw. zu definieren. PostScript macht die Files aber sehr groß (z.B. 100 Druckseiten u.U. = 40 Mb (!) PostScript). Auch gibt es durchaus lästige Inkompatibilitäten zwischen PostScript-Files, die mit verschiedenen Programmen erstellt wurden. PostScript wird vor allem zur Steuerung von Druckern und Fotosatzgeräten benutzt. Softwarepakete, die PostScript zur Druckerausgabe unterstützen, ermöglichen trotzdem oft nicht eine Bildschirmwiedergabe von PostScript-Dateien. Die Umsetzung einer Postscript-Datei zur Druckausgabe erfolgt innerhalb des Druckers durch einen speziellen Postscript-Interpreter. Mit Display PostScript besteht die Möglichkeit, auch die Bildschirmausgabe durch PostScript zu steuern.


Weiterführende Ressourcen zu Postscript:

Yahoo Categories:


12.4.5. Adobe Acrobat


Acrobat® ist eine von Adobe 1993 vorgestellte Software zum Datenaustausch. Adobe Acrobat hat ähnliche Features wie PostScript, Acrobat-Files sind aber weniger umfangreich als PostScript-Files. Lange Zeit war der Acrobat Reader nicht kostenlos erhältlich, was der Verbreitung von Adobe Acrobat sehr im Wege stand. Jetzt ist der Adobe Acrobat Reader Freeware und Files im Acrobat-Format .pdf (Portable Document Format) werden auch immer häufiger als Web-Seiten angeboten. Da pdf-Files viel umfangreicher und umständlicher in der Handhabung sind als html-Files, scheint mir die Publikation im WWW mittels von pdf-Files nur in den Fällen berechtigt, in denen ein unveränderliches Layout zwingend zum angebotenen Inhalt gehört (sonst gehört das in die Kategorie: "Protzige Form soll mangelhaften Inhalt verbergen").


Weiterführende Ressourcen Adobe Acrobat:

Yahoo Categories:

 


Zu Kapitel 12, Teil 2