PDF formatı satır sonlarına izin verir, ancak PDFBox'ın satır sonları için bir özellik özelliği yoktur.
Eğer
TL
-Operatör ile kullanmak istediğiniz lider tanımlamak zorunda PDF satır sonlarını kullanın.
T*
-ölçer, bir satır sonu oluşturur.
'
-operator verilen metni bir sonraki satıra yazar. (Daha fazla bilgi için bkz. PDF-spec, "Metin" bölümü. Çok fazla değil.)
İki kod parçacığı burada. Her ikisi de aynı, ancak ilk snippet '
kullanır ve ikinci snippet T*
kullanır. satır sonu için
private void printMultipleLines(
PDPageContentStream contentStream,
List<String> lines,
float x,
float y) throws IOException {
if (lines.size() == 0) {
return;
}
final int numberOfLines = lines.size();
final float fontHeight = getFontHeight();
contentStream.beginText();
contentStream.appendRawCommands(fontHeight + " TL\n");
contentStream.moveTextPositionByAmount(x, y);
contentStream.drawString(lines.get(0));
for (int i = 1; i < numberOfLines; i++) {
contentStream.appendRawCommands(escapeString(lines.get(i)));
contentStream.appendRawCommands(" \'\n");
}
contentStream.endText();
}
private String escapeString(String text) throws IOException {
try {
COSString string = new COSString(text);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
string.writePDF(buffer);
return new String(buffer.toByteArray(), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
// every JVM must know ISO-8859-1
throw new RuntimeException(e);
}
}
Kullanım T*
:
private void printMultipleLines(
PDPageContentStream contentStream,
List<String> lines,
float x,
float y) throws IOException {
if (lines.size() == 0) {
return;
}
final int numberOfLines = lines.size();
final float fontHeight = getFontHeight();
contentStream.beginText();
contentStream.appendRawCommands(fontHeight + " TL\n");
contentStream.moveTextPositionByAmount(x, y);
for (int i = 0; i < numberOfLines; i++) {
contentStream.drawString(lines.get(i));
if (i < numberOfLines - 1) {
contentStream.appendRawCommands("T*\n");
}
}
contentStream.endText();
}
yazı yüksekliğini almak için bu komutu kullanabilirsiniz:
fontHeight = font.getFontDescriptor().getFontBoundingBox().getHeight()/1000 * fontSize;
Sen çarpın isteyebilirsiniz bazı satır sahası katiyen faktörü.
@Erik: Ama T * 've - '-operator ile olan nedir? pdf-spec T *: "Bir sonraki satırın başlangıcına git" yazıyor. Ve ':' Bir sonraki satıra git ve bir metin dizesi göster ". Ama pdfBox'ta T * veya '' yi kullanmanın bir yolunu bulamadım. (Ve doğruyu anladığımdan emin değilim.) – Lukas