web-dev-qa-db-ja.com

テキスト行間隔の変更

私はテキストのみで構成されるPDFドキュメントを作成しています。すべてのテキストは同じポイントサイズとフォントファミリですが、各文字は異なる色になる可能性があります。以下のコードスニペットですが、行間のデフォルトのスペースは理想的と考えるよりもわずかに大きくなっています。これを制御する方法はありますか?(私は改行文字を個別に扱っていますが、それが何らかの理由でチャンクにある場合は改行を引き起こさないということです)

ありがとう、レイ

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

PDF仕様によれば、2行のベースライン間の距離はleadingと呼ばれます。iTextでは、デフォルトのリーディングはフォントのサイズの1.5倍で、たとえば、デフォルトのフォントサイズは12ポイントであるため、デフォルトのリーディングは18です。

他のコンストラクタのいずれかを使用して、Paragraphの先頭を変更できます。例: public Paragraph(float leading、String string、Font font)

リーディングを設定するメソッドのいずれかを使用して、リーディングを変更することもできます。

paragraph.SetLeading(fixed, multiplied);

最初のパラメーターは、固定の先頭です。使用するフォントサイズに関係なく先頭の15が必要な場合は、fixed = 15と乗算= 0を選択できます。

2番目のパラメーターは要因です。たとえば、先頭をフォントサイズの2倍にしたい場合は、fixed = 0と乗算= 2を選択できます。この場合、フォントサイズ12の段落の先頭は24になります。フォントサイズ10、20、そして息子になります。

固定行送りと乗算行送りを組み合わせることもできます。

42
Bruno Lowagie
    private static Paragraph addSpace(int size = 1)
    {

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

    }
3
Pascal Carmoni