Ist es möglich, zum ausrichten von text in PDFBOX?
Gibt es eine Funktion in der PDFBOX-API, um den text gerechtfertigt oder haben wir es manuell zu tun?? und wenn manuell, dann wie Sie zum ausrichten von text mit Hilfe von java(Logik dahinter)
- Was ist die genaue Frage?? Seine nicht klar, was Sie Fragen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese ältere Antwort zeigt, wie zu brechen eine Zeichenfolge in Teilzeichenfolgen Einbau in einer gegebenen
width
. Um den Beispielcode dort ziehen die Teilzeichenfolgen in einer Weise zu füllen, die ganze Linie breiten, ersetzen Sie Sie wie folgt (abhängig von der PDFBox-version):PDFBox 1.8.x
Ersetzen Sie die Letzte Schleife
mit dieser aufwendigeren ein:
(Aus BreakLongString.java test
testBreakStringJustified
für PDFBox 1.8.x)Wenn Sie sich Fragen, über die
replace(',', '.')
im... mein Gebietsschema verwendet ein Komma als Dezimalzahlen als Trennzeichen und nach meinem ersten Testlauf ergab Kommas in den Inhalt der Seite, ich war ein bisschen faul und einfach Hinzugefügt, das zu ersetzen, um Dinge zu reparieren...
PDFBox 2.0.x
Ersetzen Sie die Letzte Schleife
mit dieser aufwendigeren ein:
(Aus BreakLongString.java test
testBreakStringJustified
für PDFBox 2.0.x)Diese Lösung verwendet lediglich extra Zeichenabstand (Betreiber Tc) für eine Rechtfertigung. Sie könnten stattdessen verwenden Sie zusätzliche Leerzeichen zwischen den Wörtern (Betreiber Tw), die erweitert nur die Leerzeichen, oder eine Kombination von beiden; beachten Sie aber: word-spacing funktioniert nicht mit allen font-Kodierungen. Für weitere Informationen über diese Operanden vgl. Tabelle 105 Text Zustand Operatoren, Abschnitt 9.3.2 Zeichenabstand, und Abschnitt 9.3.3 Word-Spacing in der PDF-Spezifikation ISO 32000-1
Anstelle des ehemaligen
erhalten Sie jetzt
Wie Sie sehen, gibt es noch einen kleinen Defizit, die Letzte Zeile eines Absatzes soll offenbar nicht begründet werden. In der letzten Zeile, daher verwenden Sie einen
0
Zeichenabstand statt:PS ich stolperte über die Tatsache, dass die
setCharacterSpacing
derzeit (November 2016) wird nur in der 2.1.0-SCHNAPPSCHUSS-Entwicklung version und nicht die 2.0.x release-Versionen noch. Also in 2.0.x Sie müssen möglicherweise zurückgreifen, um mitappendRawCommands
statt, auch wenn es markiert wurde als veraltet markiert.if(line.length() >= <something>)
, und auf 0 sonst. So alle Zeilen, die unterhalb bestimmter Länge (in Zeichen) wird nicht begründet werden. In meinem Fall habe ichlines.get(0).length() / 1.5
als Referenz (vorausgesetzt Linien.get(0) existiert)