更改文本行间距

时间:2014-02-16 10:47:57

标签: itextsharp

我正在创建一个仅包含文本的PDF文档,其中所有文本都是相同的磅值和字体系列,但每个字符可能是不同的颜色。使用下面的代码片段似乎一切正常,但行之间的默认空间略大于我认为的理想值。有没有办法控制这个? (仅供参考,在下面的代码中键入“ColoredText”仅包含一个字符串及其颜色。另外,我分别处理换行符的原因是,由于某种原因,如果它在一个Chunk中,它不会导致换行。)< / p>

谢谢, 射线

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());

2 个答案:

答案 0 :(得分:41)

根据PDF规范,两条线的基线之间的距离称为前导。在iText中,默认前导是字体大小的1.5倍。例如:默认字体大小为12 pt,因此默认前导值为18。

您可以使用其他构造函数之一更改Paragraph的前导。例如,请参阅:public Paragraph(float leading, String string, Font font)

您还可以使用设置前导的方法之一来更改前导:

paragraph.SetLeading(fixed, multiplied);

第一个参数是固定前导:如果你想要15的前导,无论使用哪种字体大小,你可以选择fixed = 15和multiplied = 0.

第二个参数是一个因素:例如,如果您希望前导值是字体大小的两倍,则可以选择fixed = 0和multiplied = 2.在这种情况下,字体大小为12的段落的前导将为24,对于字体大小10,它将是20,并且是儿子。

您还可以组合固定和倍增的领先。

答案 1 :(得分:3)

    private static Paragraph addSpace(int size = 1)
    {

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

    }