Dokumentation

Drehen

Zwei Werkzeuge für zwei Aufgaben: Rotated dreht einen Teilbaum um einen beliebigen Winkel, für Stempel und Watermark, und RotatedBox macht Quarter-Turns, die das Layout berücksichtigt, für senkrechte Labels. Beide drehen um die Mitte des Elements.

Rotated - ein Stempel oder Watermark

Rotated({ angle }, child) dreht child um angle Grad (im Uhrzeigersinn) um seine Mitte, genau wie CSS transform: rotate(). Es ist paint-only: Das Kind behält seine normale Layout-Box, die gedrehte Zeichnung darf also über ihren Platz hinausragen, und Geschwister ordnen sich nie neu um sie herum. In einer Row oder Column ist das Kind das Element geändert in beta.5 - ein Expanded in einem Rotated dehnt sich also weiterhin. Genau das wollen Sie bei einem Stempel - er soll den Inhalt darunter nicht verschieben.

Zusammen mit einer relative-Box und Positioned legen Sie einen Stempel „BEZAHLT“ / „PAID“ schräg über ein Dokument:

import { Box, Text, Positioned, Rotated } from "@jasy/pdf";

Box({ relative: true }, [
  // ... your invoice ...
  Positioned(
    { h: "center", v: "center" },
    Rotated(
      { angle: -18 },
      Box({ border: "#c0392b", borderWidth: 4, radius: 12, padding: { x: 26, y: 12 } }, [
        Text("BEZAHLT", { size: 40, bold: true, color: "#c0392b" }),
      ]),
    ),
  ),
]);

Positioned({ h: "center", v: "center" }) zentriert den Stempel auf der Karte; Rotated kippt ihn an Ort und Stelle um seine eigene Mitte. Siehe die Rechnung mit Stempel im Showroom.

RotatedBox - ein senkrechtes Label

Ein Stempel ändert das Layout nicht - ein senkrechtes Label neben einer Tabelle aber sollte es. RotatedBox({ turns }, child) macht ganze Quarter-Turns und berücksichtigt das Layout: Eine Drehung um 90 oder 270 Grad tauscht Breite und Höhe der Box, sie reserviert also ihre schmale Breite und große Höhe, und Geschwister ordnen sich um sie herum an. turns ist die Zahl der Quarter-Turns im Uhrzeigersinn (1 = 90 Grad, 2 = 180, 3 = 270).

import { Row, Column, Text, RotatedBox } from "@jasy/pdf";

Row({ align: "center" }, [
  RotatedBox({ turns: 3 }, Text("SECTION A", { size: 16, bold: true })), // reads bottom-to-top
  Column({ gap: 6 }, rows), // the list; the label sits tight to its left, vertically centered
]);

Weil die gedrehte Box ihren echten Footprint meldet, nimmt das Label nur ihre schmale Breite (kein toter Raum) und bleibt senkrecht mittig neben der Liste.

Welches von beiden

  • Rotated - jeder Winkel, das Layout bleibt unberührt. Stempel, Watermark, dekorative Badges.
  • RotatedBox - Schritte von 90 Grad, das Layout folgt. Senkrechte Labels für Tabellen und Spalten.

Gut zu wissen

  • Pivot ist die Mitte. Beide drehen um die Mitte der Box des Elements (CSS transform-origin: center).
  • In Rotated ist die Drehung paint-only. Nach einem Rotated um 90 Grad wird die Layout-Box NICHT hoch - sie bleibt, wie sie war, und die Zeichnung ragt hinaus. Greifen Sie zu RotatedBox, wenn das Layout folgen soll.