我正在研究winforms并需要创建一个pdf页面,用户可以在其中输入他的详细信息,我的代码是:
heroku run rake db:seed
//如果我的地址几乎相同,那么它打印得很好但如果我的男孩地址太大,假设它有超过100个字符,则下一个即将到来的行的序列将被更改
答案 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列的两倍。