iText PDF MultiColumnText线高

时间:2012-10-05 21:24:54

标签: c# .net itextsharp itext

在将Paragraph对象添加到MultiColumnText对象内的Column时,我无法设置行高的行高。

注意每个新行之间的任意间距。此处屏幕截图显示第二列上呈现的内容。 https://dl.dropbox.com/u/249320/Foliotek/Capture.PNG

我让它渲染并正确地进入下一列。但我似乎无法设置每个新行的高度。想法?

我的代码:

MultiColumnText mct = new MultiColumnText();
            mct.Alignment = Element.ALIGN_JUSTIFIED_ALL;
            //8

            // setup column 1
            float[] left = {1020, 280, 1020, 7 };
            float[] right = {1022, 576,
                         1022, 280,
                         1096, 280,
                         1214, 154,
                         1214, 7
                        };
            mct.AddColumn(left, right);

            // setup column 2
            left = new float[] { 1422, 576,
                              1422, 266,
                              1259, 106,
                              1246, 105,
                              1246, 7
                             };
            right = new float[] {1433, 280, 1433, 7 };
            mct.AddColumn(left, right);
            techDataColumnText += " GALLIA est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.  Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit. Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt.  Qua de causa Helvetii quoque reliquos Gallos virtute praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt.";
            Paragraph techDataPhrase = new Paragraph(techDataColumnText, new Font(FuturaBoldBaseFont, 8f));

            mct.AddElement(techDataPhrase);
            do
            {
                document.Add(mct);
                mct.NextColumn();
            } while (mct.IsOverflow());

1 个答案:

答案 0 :(得分:1)

三个想法:

  1. MultiColumnText已从最新的iText版本中删除,因此您可能不想在其中花费太多时间。如果您需要面向未来的解决方案,请使用ColumnText
  2. 你说有一个任意的行高。在PDF语言中,行高称为前导。我没有看到你在任何地方使用setLeading()(也许我忽略了一些东西)。
  3. (Multi)ColumnTextPdfPCell有两种不同的模式。文本模式和复合模式。
  4. 复合模式中,将忽略容器(列或单元格)的设置,以支持内容的设置(Paragraph和其他添加的对象) 。在此模式下,容器的内容可以具有不同的引导,对齐,......

    文本模式中,您可以在容器级别(列或单元格)设置前导,并且所有内容都遵循该设置。在此模式下,所有内容都具有相同的前导,相同的对齐方式......

    您正在创建一个不规则列,这意味着您只能在文本模式下工作。您需要在列的级别设置前导。