So berechnen Sie Breite und Höhe der text in jspdf?
Ich bin vor einige Probleme beim erstellen von Tabellen in jspdf. Ich konnte nicht finden, eine gute Verwandte docs, aber wenn jemand weiß, bitte teilen.
Fand ich zwei ähnliche Methoden:
1) doc.getStringUnitWidth(text, {widths:12,kerning:2});
2) doc.getTextDimensions(text)
Was bedeutet breiten und kerning meine, in der ersten Methode? Was sollte ich angeben? Welche Methode sollte ich verwenden um die Breite und Höhe der text?
Mein Ziel ist, lösen Sie einige Fragen im Zusammenhang mit der überlappung mit dem Inhalt einer Zelle, umbrechen von text-und text-overflow relativ zur Seitenbreite.
InformationsquelleAutor der Frage NFE | 2013-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht möchten Sie sich an der AutoTable plugin für das generieren von Tabellen mit jsPDF. Ich fand die eingebauten plugin-hart, mit zu arbeiten und ist nicht dokumentiert, an alle.
Der beste Weg, die ich gefunden habe, zum berechnen der Breite ist einfach, dies zu tun:
Wenn Sie etwas anderes verwenden, dann
pt
Sie brauchen, um es zu transformieren weiter. Hier ist die offizielle Bemerkungen über die MethodegetStringUnitWidth()
:Wie Sie sehen können, in meinem obigen Beispiel das Objekt mit breiten-und kerning ist optional und sollte nicht angegeben werden, es sei denn, sehr spezielle Schriftarten verwendet werden.
Wenn Sie wirklich brauchen, um die Berechnung der Höhe
getDimensions()
könnte eine option sein. Es ist jedoch nicht pixel perfect " und suchen Sie die Quelle, die ich bezweifle, wird es Arbeit für nichts, aberpt
. Hier ist ein Beispiel:InformationsquelleAutor der Antwort Simon Bengtsson
Fand ich diese Frage auf der Suche nach Antworten zu einem ähnlichen Problem. Leider, die Antworten haben mein problem nicht lösen, aber ich vermute, was ich habe finden können, anderen Menschen helfen zu stolpern auf diese Frage.
Wie bereits erwähnt, die .getStringUnitWidth(text) wird wieder die Breite eines Strings (in pt). Ich konnte nie finden, eine Erklärung für die Optionen wie "kerning" oder "weiten" in der Dokumentation oder in der tatsächlichen .js-Datei. Ich bemerkte auch, mit meinen eigenen Nutzung, diese Methode tatsächlich war die Unterschätzung breiten von ~10%, welche Schritte zu oben sehr schnell hinzufügen. Schließlich war dies nicht Konto für Schriften, die waren Fett, Kursiv oder Fett und Kursiv gedruckt.
Da ich hohe Genauigkeit, landete ich die Berechnung der Breite der einzelnen Zeichen auf meine eigene, und verwenden Sie diese zur Berechnung eines string-Breite (von insgesamt die Breite der einzelnen Zeichen in einem string).
Unten sind die font-Breite bei Größe 1 (in pt) für alle Zeichen akzeptiert jsPDF in den 3 Standard-fonts (helvetica, times, courier):
Sobald Sie haben bestimmt die Breite der Zeichenfolge mit der obigen Tabelle, die Sie konvertieren müssen, die Antwort auf Ihre gewünschte Maßeinheit.
Der einzige Nachteil der Verwendung der oben genannten, die ich denken konnte, war, wenn Sie Ihre pdf-Ausgabe wurde die Nutzung von kerning-Paaren. Meine Ausgabe-Dateien nicht erscheinen, werden mit kerning-Paare, so dass ich nicht erforschen die Frage weiter. Wenn aus irgendeinem Grund ist dies ein Problem für Sie, würden Sie brauchen, um Ihre Breite etwas für jeden kerning-paar, wie es geschah.
Die Berechnung der Höhe ist wesentlich weniger aufwendig. Die Höhe einer einzelnen Zeile text ist einfach die Schriftgröße. Eine Zeile text in Größe 10 nehmen 10 pt.
Wenn Sie wollen, zu berechnen, die mehrere Zeilen von text müssen Sie für das Konto "line-height" (im wesentlichen die Menge der Leerraum zwischen den Zeilen). In meinen Tests fand ich, dass jsPDF nutzt eine Standard Zeile Höhe von 115% (1.15 x) die Größe der schriftart. Damit Ihre Berechnung der Zeilenhöhe werden würde:
Du dann einfach konvertieren Sie Ihre gewünschte Maßeinheit wie oben.
InformationsquelleAutor der Antwort Joshua T