Используя iText, как мне изменить расстояние между новыми линиями? - PullRequest
0 голосов
/ 19 декабря 2018

Я возиться с itext, и я менял размер шрифта, и в результате я получаю какой-то странно разнесенный текст в моем pdf:

enter image description here

Который я хотел бы превратить в что-то вроде этого: (Извините, плохое редактирование изображений)

enter image description here

Это код, который я используючтобы ввести текст:

private fun setBaseInfo(info: ArrayList<String>): PdfPCell
{
    val cell = PdfPCell()

    val glue = Chunk(VerticalPositionMark())
    val p = Paragraph()
    p.font.size = 8.0f

    for (str in info)
    {
        p.add(glue)
        p.add(str)
        p.add("\n")
    }

    cell.border = Rectangle.NO_BORDER
    cell.addElement(p)

    return cell
}

И это информация, которую я передаю:

private fun foo(): ArrayList<String>
{
    val array = ArrayList<String>()
    array.add("Hi")
    array.add("StackOverflow")
    array.add("I'd Like")
    array.add("This")
    array.add("text")
    array.add("to be closer")
    array.add("together!")
    return array
} 

При удалении p.add("\n") это вывод: enter image description here

1 Ответ

0 голосов
/ 19 декабря 2018

Полное раскрытие: бывший сотрудник iText здесь

Вот как я бы это сделал:

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

    // create a temp file to hold the output
    File outputFile = File.createTempFile("stackoverflow",".pdf");

    PdfDocument pdfDocument =  new PdfDocument(new PdfWriter(outputFile));
    Document layoutDocument = new Document(pdfDocument);

    String[] lines = {"Hi","StackOverflow","I'd like","this","text","to","be","closer","together!"};
    for(String line : lines){
        layoutDocument.add(new Paragraph(line)
                .setMultipliedLeading(0.5f));   // this is where the magic happens
    }

    layoutDocument.close();
    pdfDocument.close();

    // display the temp file with the default PDF viewer
    Desktop.getDesktop().open(outputFile);
}

Я изменил пару вещей:

  • Использованиепоследняя версия iText, когда это возможно.Вы хотите воспользоваться несколькими годами исправлений и новой архитектурой.
  • Не используйте таблицы для решения проблем с макетом.
  • Используйте ведущие (MultipliedLeading или FixedLeading) для объектов Paragraph, чтобы исправить вашу проблему.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...