Es gibt keinen speziellen Trick, aber es ist wichtig zu verstehen, wie Transformationen in PDFKit angewendet werden.
Die wichtigste Sache zu verstehen ist, dass Sie nicht Text oder eine Form drehen: Sie drehen Ihr Dokument, wie durch doc.rotate(...).rect(...)
impliziert.
Es kann Ihnen helfen, Ihr Dokument als Zeichenfläche mit physikalischen Eigenschaften zu sehen. Eine seiner Eigenschaften ist seine Rotation.
Wenn Sie gedrehten Text auf einer Papierseite zeichnen möchten, drehen Sie wahrscheinlich Ihre Seite physisch, schreiben Sie dann wie gewohnt einen Text horizontal und drehen Sie dann die Seite in den Normalzustand zurück.
Was Sie mit dann am Ende, ist ein gedrehter Text auf einer geraden Seite:
Das ist genau, wie PDFKit funktioniert: Sie eine Transformation auf das Dokument anwenden, müssen ziehen alles, was Sie in diesem ziehen transformierten Kontext und setzen das Dokument in den vorherigen Zustand zurück.
Um dies zu erreichen, haben Sie zwei Methoden: doc.save()
und doc.restore()
.
- Verwenden
save()
vor eine Transformation anwenden, so dass alles, was vorher gezogen worden ist, ist nicht betroffen.
- Anschließend können Sie Ihre Leinwand verwandeln und zeichnen, was Sie
- brauchen Wenn Sie alles gezeichnet haben, die, rufen Sie transformiert werden benötigt, um
restore()
das Dokument in seinen ursprünglichen Zustand zurück zu setzen. Es wird im Grunde alle Transformationen (z. B. Rotation, Skalierung, Translation) nach dem letzten Aufruf save()
rückgängig machen.
Um (ein bisschen), um das Diagramm oben zu reproduzieren würden Sie tun:
doc.text('text', ...)
doc.save()
doc.rotate(90).text('rotated text', ...)
doc.restore()
Eine letzte Sache zu verstehen ist, dass Koordinatensystem Ihres Dokuments durch Transformationen beeinflusst:
Wenn also text
an den Koordinaten (0, 0)
gezeichnet wurde, dann wurde rotated text
auf etwas wie (0, documentHeight/2 - offset)
gezeichnet.
Es ist ziemlich einfach, mit bei der Verwendung von Vielfachen von 90 Grad Drehungen zu tun, aber Sie werden mit Trigonometrie sonst spielen :)
Dinge zu erleichtern, können Sie mit dem Ursprung der Rotation spielen Sie, um sicherzustellen, drehen das Dokument um einen Punkt, der für deine nächsten Zeichnungen Sinn macht!
Nachdem ich [diesen Teil der Beispiele] (http://pdfkit.org/docs/vector.html) gelesen habe, muss ich fragen: Warum hat 'rotate' nicht für dich funktioniert? – usr2564301
Eigentlich 'rotate()' gearbeitet, aber der fehlende Teil war die 'save()' und 'restore()' Funktionen, und das wurde von Olivier Lance Antwort gelöst! Also, bei meinen ersten Versuchen habe ich das Dokument einmal gedreht, und mein zweites 'rotate()' brachte das PDF-Rendering durcheinander, und jetzt konnte ich dank Save() 'ein Element mit dem Text zurückdrehen , ohne Unordnung zu machen :) – LukyVj