speedata Blog

Entwicklungen & Neuigkeiten zum speedata Publisher

Feature der Woche: Transformation von Objekten

Die vier grundlegenden Transformationen (aus der PDF-Spezifikation)

Mit dem Befehl <PlaceObject> können Texte, Bilder, Kästchen und andere Objekte ausgegeben werden. Ein besonderes Objekt ist die <Transformation>, die Objekte drehen, stauchen und verzerren kann. Der Befehl enthält wiederum das Objekt, das manipuliert werden soll. Das Grundgerüst ist folgendes:

<PlaceObject>
  <Transformation matrix=" ... ">
    <Image  />
  </Transformation>
</PlaceObject>

Die Matrix, die angegeben werden muss, besteht aus 6 Zahlen der Form »a b c d e f«. Die Transformation von einem Koordinatensystem in ein anderes wird über folgende 3x3 Matrix abgebildet:

Wenn man aus den Koordinaten x und y die neuen Koordinaten x’ und y’ errechnen will, kann man das auch über die folgende Formeln machen:

Es gibt folgende grundlegende Transformationsarten (siehe Abbildung oben):

  1. Verschiebungen (translation) werden mit den Werten 1 0 0 1 tx ty beschrieben
  2. Die Skalierung (scaling) wird mit sx 0 0 sy 0 0 angegeben
  3. Drehungen (rotation) können mit cos θ sin θ −sin θ cos θ 0 0 erreicht werden
  4. Verschiefungen (skew) sind durch 1 tan α tan β 1 0 0 beschrieben.
  5. Die unverändernde Transformation ist 1 0 0 1 0 0 (identische Abbildung).

Folgende »Verschiefung«

<PlaceObject>
  <Transformation matrix="1.8 0.2 0.2 0.8 0 0 ">
    <Image file="ocean.pdf" width="4"/>
  </Transformation>
</PlaceObject>

ergibt.

Das Ergebnis der Transformation.

Transformationen kann man übrigens auch schachteln.

Dieser Artikel bezieht sich auf den speedata Publisher in der Version 2.9.3. Andere Versionen haben womöglich andere Befehle oder die genannten Befehle zeigen ein anderes Verhalten. Bitte schau im Zweifelsfall in der Anleitung nach.

In der Serie »Feature der Woche« beschreibe ich einmal in der Woche mehr oder weniger nützliche Eigenschaften des Publishers. Kommentare gerne an mich per E-Mail oder einfach im Kommentarfeld.

Teilen auf   
comments powered by Disqus