如何制作一个可根据文字自动调节的pdftable

时间:2016-10-06 10:43:23

标签: c# asp.net itext

我正在研究winforms并需要创建一个pdf页面,用户可以在其中输入他的详细信息,我的代码是:

heroku run rake db:seed

//如果我的地址几乎相同,那么它打印得很好但如果我的男孩地址太大,假设它有超过100个字符,则下一个即将到来的行的序列将被更改

1 个答案:

答案 0 :(得分:1)

我假设您有一个包含三列的表:

PdfPTable table = new PdfPTable(3);

您希望向此表添加行,但您只需添加三个单元格而不是添加行,而是尝试使用\n个字符来模仿行。这是个坏主意。你应该做这样的事情:

// row 1
PdfPCell first_form1 = new PdfPCell();
first_form1.AddElement(new Phrase("6)  Complete  Postal  Address ", normalFontBold));
table.AddCell(first_form1);
PdfPCell second_form1 = new PdfPCell();
second_form1.AddElement(new Phrase(boy_address, normalFontBold));
table.AddCell(second_form1);
PdfPCell third_form1 = new PdfPCell();
third_form1.AddElement(new Phrase(girl_address, normalFontBold));
table.AddCell(third_form1);
// row 2
first_form1 = new PdfPCell();
first_form1.AddElement(new Phrase("7)  Date  of  Birth(Proof in the form of birth certificate or school certificate or medical certificate indicating age) ", normalFontBold));
table.AddCell(first_form1);
second_form1 = new PdfPCell();
second_form1.AddElement(new Phrase(boy_dob, normalFontBold));
table.AddCell(second_form1);
third_form1 = new PdfPCell();
third_form1.AddElement(new Phrase(girl_dob, normalFontBold));
table.AddCell(third_form1);
// row 3
first_form1 = new PdfPCell();
first_form1.AddElement(new Phrase("8)  Age (in complete years) as on the date of marriage ", normalFontBold));
table.AddCell(first_form1);
second_form1 = new PdfPCell();
second_form1.AddElement(new Phrase(boy_age, normalFontBold));
table.AddCell(second_form1)
third_form1 = new PdfPCell();
third_form1.AddElement(new Phrase(girl_age, normalFontBold));
table.AddCell(third_form1);;
// row 4
first_form1 = new PdfPCell();
first_form1.AddElement(new Phrase("9)  Date  Of  Marriage " + "\n\n", normalFontBold));
table.AddCell(first_form1);
second_form1 = new PdfPCell();
second_form1.AddElement(new Phrase(date_0f_mrg, normalFontBold));
table.AddCell(second_form1);
third_form1 = new PdfPCell();
third_form1.AddElement(new Phrase(date_0f_mrg, normalFontBold));
table.AddCell(third_form1);
// row 5
first_form1 = new PdfPCell();
first_form1.AddElement(new Phrase("10)  Place  Of  Marriage " + "\n\n", normalFontBold));
table.AddCell(first_form1);
second_form1 = new PdfPCell();
second_form1.AddElement(new Phrase(place_of_mrg, normalFontBold));
table.AddCell(second_form1);
third_form1 = new PdfPCell();
third_form1.AddElement(new Phrase(place_of_mrg, normalFontBold));
table.AddCell(third_form1);

这就是应该的使用方式。现在,如果某些数据太大而无法适应宽度,则数据将分布在不同的行上,但不同的行将保持对齐(在您的设置中不是这种情况)。

我删除了\n,但如果您希望行具有最小高度,则可以使用MinimumHeight属性。例如:

first_form1.MinimumHeight = 48;

在我的代码中,将绘制边框。如果要更改或删除它们,可以使用Border属性。例如:

second_form1.Border = Rectangle.NO_BORDER;

如果您希望某些列具有不同的宽度,则可以更改WidthPercentage

table.WidthPercentage = 100;

相对列宽:

float[] widths = new float[] { 1, 2, 2 };
table.SetWidths(widths);

在这种情况下,第2列和第3列的宽​​度是第1列的两倍。