C# 表格边框不会自动放入内容中

C# 表格边框不会自动放入内容中,c#,asp.net-mvc,itextsharp,C#,Asp.net Mvc,Itextsharp,我通过iTextSharp(4.1.2)创建了一份发票 我的问题在于发票的某一部分,其中显示了条款和条件以及付款条件。下图显示了我的问题 但是,当动态行不存在时(我的意思是没有选定的折扣、没有运费和税费、只有小计和总计),外观与图像类似。我的底边掉到远底,而不是在牢房里 约束条件: 升级目前还不是一个选项,因为已经有打印 需要iTextSharp 4.1.2的功能 由于时间限制,将HTML转换为PDF还不是一种选择 我希望你能帮我做这件事 编辑:修改问题以反映复制的输出和代码 prote

我通过iTextSharp(4.1.2)创建了一份发票

我的问题在于发票的某一部分,其中显示了条款和条件以及付款条件。下图显示了我的问题

但是,当动态行不存在时(我的意思是没有选定的折扣、没有运费和税费、只有小计和总计),外观与图像类似。我的底边掉到远底,而不是在牢房里

约束条件

  • 升级目前还不是一个选项,因为已经有打印 需要iTextSharp 4.1.2的功能
  • 由于时间限制,将HTML转换为PDF还不是一种选择
我希望你能帮我做这件事

编辑:修改问题以反映复制的输出和代码

protectedvoid btnViewPDF\u单击(对象发送方,事件参数e)
{
//使用默认设置在内存中创建文档。
var document=新文档();
字符串路径=Server.MapPath(“PDF”);
//将文档提交到磁盘。
GetInstance(文档,新文件流(path+“/PaymentDetails.pdf”,FileMode.Create));
//打开文档。
document.Open();
#请在此处执行PDF文档逻辑。。。
//创建包含两列的PdfPTable。这将用于布局。
PdfPTable outerTable=新的PdfPTable(2);
outerTable.TotalWidth=510f;
outerTable.LockedWidth=true;
outerTable.DefaultCell.Border=Rectangle.BOX;
#区域第一列
//在第一列中添加PdfPTable。
PdfPTable outerTableFirstColumn=新的PdfPTable(1);
outerTableFirstColumn.TotalWidth=450f;
outerTableFirstColumn.DefaultCell.BorderColor=Color.BLACK;
//将单元格添加到第一列。
PdfPCell outerTableFirstColumnHeader=新的PdfPCell()
{
Border=Rectangle.BOX,
BorderColor=Color.BLACK,
短语=新短语(“条款和条件”,FontFactory.GetFont(“控制台”,8,(int)Font.BOLD,Color.BLACK)),
填充=5f
};
AddCell(outerTableFirstColumnHeader);
字符串myTermsAndConditions="订单的接受和取消。客户不得取消客户接受的发票,并构成客户与公司之间具有约束力的协议。如果客户出于任何原因取消或以其他方式撤回订单,且不限制公司可能因此采取的任何其他补救措施在此类取消或其他撤销的情况下,客户应向公司支付合理的取消费用,包括当时发生的所有费用和公司作出的承诺。”;
PdfPCell outerTableFirstColumnContent=新的PdfPCell()
{
Border=Rectangle.BOX,
BorderColor=Color.BLACK,
短语=新短语(myTermsAndConditions,FontFactory.GetFont(“控制台”,8,(int)Font.NORMAL,Color.BLACK)),
填充=5f
};
AddCell(outerTableFirstColumnContent);
#端区
#区域第二列
//在第二列中添加PdfPTable。
PdfPTable outerTableSecondColumn=新的PdfPTable(1);
outerTableSecondColumn.TotalWidth=70f;
outerTableSecondColumn.DefaultCell.Border=Rectangle.BOX;
PdfPTable outerTableSecondColumnContent=新的PdfPTable(3);
SetWidths(新浮点[]{3f,0.5f,1.5f});
outerTableSecondColumnContent.DefaultCell.Border=Rectangle.BOX;
AddCell(GeneratePaymentDetailCell(“小计”);
outerTableSecondColumnContent.AddCell(GeneratePaymentDetailCell(“$”);
AddCell(GeneratePaymentDetailCell(“999.99”);
#区域条件单元格加法
//初始化可以控制以生成结果的详细信息。
var小计=999.99百万;
var selectedDiscountType=折扣类型.NoDiscount;
无功功率=30M;
var贴现率=2318万;
var贴现百分比金额=0.00百万;
var selectedTaxType=TaxType.NoTax;
var FlataxAmount=2000万;
var税率=1250万;
var taxPercentAmount=0.00M;
var includeShipping=false;
var运输成本=20.50M;
如果(selectedDiscountType!=0)
{
开关(选择DiscountType)
{
案例折扣Type.Flat折扣:
{
//折扣额
outerTableSecondColumnContent.AddCell(GeneratePaymentDetailCell(“固定折扣”);
outerTableSecondColumnContent.AddCell(GeneratePaymentDetailCell(“$”);
outerTableSecondColumnContent.AddCell(GeneratePaymentDetailCell(decimal.Parse(flatdecentAmount.ToString()).ToString(“N”));
}
打破
案例折扣类型.百分比折扣:
{
平面安装=0;
//贴现率
outerTableSecondColumnContent.AddCell(GeneratePaymentDetailCell(“%折扣:”);
outerTableSecondColumnContent.AddCell(GeneratePaymentDetailCell(“”);
outerTableSecondColumnContent.AddCell(GeneratePaymentDetailCell(String.Format(discountRate.ToString(),“{0:0.0}”));
折扣百分比金额=小计*(折扣/100);
//总折扣
outerTableSecondColumnContent.AddCell(GeneratePaymen