Изменение интервала текстовой строки - программирование
Подтвердить что ты не робот

Изменение интервала текстовой строки

Я создаю PDF-документ, состоящий только из текста, где весь текст имеет одинаковый размер и семейство шрифтов, но каждый символ может быть другого цвета. Кажется, что все работает отлично, используя нижеприведенный фрагмент кода, но пространство по умолчанию между строками немного больше, чем я считаю идеальным. Есть ли способ контролировать это? (FYI, тип "ColoredText" в приведенном ниже коде просто содержит строку и ее цвет. Кроме того, причина, по которой я обрабатываю символ новой строки отдельно, заключается в том, что по какой-то причине она не вызывает новую строку, если она в Chunk.)

Спасибо, Ray

List<byte[]> pdfFilesAsBytes = new List<byte[]>();
iTextSharp.text.Document document = new iTextSharp.text.Document();
MemoryStream memStream = new MemoryStream();
iTextSharp.text.pdf.PdfWriter.GetInstance(document, memStream);
document.SetPageSize(isLandscape ? iTextSharp.text.PageSize.LETTER.Rotate() : iTextSharp.text.PageSize.LETTER);
document.Open();
foreach (ColoredText coloredText in coloredTextList)
{
    Font font = new Font(Font.FontFamily.COURIER, pointSize, Font.NORMAL, coloredText.Color);
    if (coloredText.Text == "\n")
       document.Add(new Paragraph("", font));
    else
        document.Add(new Chunk(coloredText.Text, font));
}
document.Close();
pdfFilesAsBytes.Add(memStream.ToArray());
4b9b3361

Ответ 1

Согласно спецификации PDF, расстояние между базовой линией двух линий называется ведущим. В iText ведущее значение по умолчанию в 1,5 раза больше размера шрифта. Например: размер шрифта по умолчанию - 12 pt, поэтому по умолчанию - 18.

Вы можете изменить начало Paragraph с помощью одного из других конструкторов. См. Например: public Paragraph (float lead, String string, Font font)

Вы также можете изменить ведущий, используя один из методов, который устанавливает ведущее:

paragraph.SetLeading(fixed, multiplied);

Первый параметр является фиксированным ведущим: если вы хотите, чтобы начальное значение из 15 не зависело от того, какой размер шрифта используется, вы можете выбрать fixed = 15 и умножить = 0.

Второй параметр является одним из факторов: например, если вы хотите, чтобы в два раза превышал размер шрифта, вы можете выбрать fixed = 0 и умножить = 2. В этом случае ведущий для абзаца с размером шрифта 12 будет 24, для размера шрифта 10 это будет 20, а сын включен.

Вы также можете комбинировать фиксированные и умноженные ведущие.

Ответ 2

    private static Paragraph addSpace(int size = 1)
    {

        Font LineBreak = FontFactory.GetFont("Arial", size);      
        Paragraph paragraph = new Paragraph("\n\n", LineBreak);
        return paragraph;

    }