Ошибка iText9: параграф.setFixedLeading(...) -> неправильный интервал между абзацамиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка iText9: параграф.setFixedLeading(...) -> неправильный интервал между абзацами

Сообщение Anonymous »

В iText v9.1.0, похоже, есть проблемы с началом абзаца.
Я ожидаю, что в начале абзаца будет вставлен пробел между предыдущим и текущим абзацем.

(Я думаю, это также можно интерпретировать как между текущим абзацем и следующим, что может показаться нелогичным, но либо до, либо после и, конечно, не то и другое одновременно)
Но с новым Paragraph().setFixedLeading(188) Я получаю большой интервал как до, так и после абзаца.
В следующем примере я ожидаю, что строка подробностей будет следовать за строкой темы с небольшим зазором, но это не так.
Ниже вы найдете исходный код и некоторые примеры вывода.

Код: Выделить всё

import java.io.*;
import java.nio.file.*;
import java.util.stream.Stream;

import com.itextpdf.kernel.pdf.*;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.*;
import com.itextpdf.layout.properties.TabAlignment;

public class Layout {

private static final TabStop TAB_400_R = new TabStop(400, TabAlignment.RIGHT);

public static void main(final String[] args) throws IOException {

final     var wp        = new WriterProperties();
;             wp.setPdfVersion(PdfVersion.PDF_2_0);

final     var pdfOst   = new ByteArrayOutputStream();
try(          pdfOst;
final var pdfWtr   = new PdfWriter  (pdfOst, wp);

final var pdfDoc   = new PdfDocument(pdfWtr);
final var doc      = new Document   (pdfDoc) )
{
generate (pdfDoc, doc);
}
Files.write(Path.of("my.pdf"), pdfOst.toByteArray(), StandardOpenOption.CREATE);
}

private static void generate(final PdfDocument pdfDoc, final Document doc) {

doc.setMargins(142, 59, 44, 55);

Stream.of(
"Full Name",
"77, Croydon Avenue",
"Redhill",
"Surrey",
"RH11 8AB").forEach(tx -> doc.add(new Paragraph(tx).addTabStops(TAB_400_R).add(new Tab()).add(tx)));

doc.add(new Paragraph("S U B J E C T   .setFixedLeading(188)").setFixedLeading(188).setUnderline(0.75f, -1.5f));

Stream.of(
"Detail 1, .setFixedLeading(6). Why is this line so far below the Subject?",
"Detail 2, .setFixedLeading(6). ",
"Detail 3, .setFixedLeading(6). ").forEach(tx -> doc.add(new Paragraph(tx).setFixedLeading(6)));
}
}
Изображение


Подробнее здесь: https://stackoverflow.com/questions/795 ... en-paragra
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»