当代码实际上相同 (iTextSharp) 时,为什么我的文本框的宽度不同?

Why do the widths of my textboxes differ when the code is effectively identical (iTextSharp)?

我有一个使用 iTextSharp 生成的 PDF 文件;这是导致我因过度抓头而患上斑秃的一部分:

代码如下:

行中较长的初始文本框("Tier 2 Signature..."以下):

PdfPTable tblSection6_Row6 = new PdfPTable(5);
tblSection6_Row6.WidthPercentage = 100;
float[] tableCellSection6_6_Widths = new float[] { 460f, 40f, 225f, 40f, 235f };
tblSection6_Row6.SetWidths(tableCellSection6_6_Widths);
tblSection6_Row6.HorizontalAlignment = Element.ALIGN_LEFT;

PdfPCell cellTextBoxTier2SigRequired = new PdfPCell()
{
    CellEvent = new DynamicTextbox("textBoxTier2SignatureReqd"),
    Phrase = new Phrase(boxFundingApproverSignature.Text, timesRoman9Font)
};
tblSection6_Row6.AddCell(cellTextBoxTier2SigRequired);

Phrase blankPhraseSec6Row6_1 = new Phrase();
PdfPCell blankCellSec6Row6_1 = new PdfPCell(blankPhraseSec6Row6_1);
blankCellSec6Row6_1.BorderWidth = 0;
tblSection6_Row6.AddCell(blankCellSec6Row6_1);

PdfPCell cellTextBoxPrintNameRow6 = new PdfPCell()
{
    CellEvent = new DynamicTextbox("textBoxPrintNameRow6"),
    Phrase = new Phrase(boxFundingApproverPrinted.Text, timesRoman9Font)
};
tblSection6_Row6.AddCell(cellTextBoxPrintNameRow6);

Phrase blankPhraseSec6Row6_2 = new Phrase();
PdfPCell blankCellSec6Row6_2 = new PdfPCell(blankPhraseSec6Row6_2);
blankCellSec6Row6_2.BorderWidth = 0;
tblSection6_Row6.AddCell(blankCellSec6Row6_2);

PdfPCell cellTextBoxDateRow6 = new PdfPCell()
{
    CellEvent = new DynamicTextbox("textBoxDateRow6"),
    Phrase = new Phrase(boxFundingApproverDate.Text, timesRoman9Font)
};
tblSection6_Row6.AddCell(cellTextBoxDateRow6);

doc.Add(tblSection6_Row6);

行中较短的初始文本框("Senior Officer Signature..."以下):

PdfPTable tblSection6_Row8 = new PdfPTable(5);
tblSection6_Row6.WidthPercentage = 100;
float[] tableCellSection6_8_Widths = new float[] { 460f, 40f, 225f, 40f, 235f };
tblSection6_Row8.SetWidths(tableCellSection6_8_Widths);
tblSection6_Row8.HorizontalAlignment = Element.ALIGN_LEFT;

PdfPCell cellTextBoxSeniorOfficer = new PdfPCell()
{
    CellEvent = new DynamicTextbox("textBoxSeniorOfficer"),
    Phrase = new Phrase(boxSeniorOfficerSignature.Text, timesRoman9Font)
};
tblSection6_Row8.AddCell(cellTextBoxSeniorOfficer);

Phrase blankPhraseSec6Row8_1 = new Phrase();
PdfPCell blankCellSec6Row8_1 = new PdfPCell(blankPhraseSec6Row8_1);
blankCellSec6Row8_1.BorderWidth = 0;
tblSection6_Row8.AddCell(blankCellSec6Row8_1);

PdfPCell cellTextBoxPrintNameRow8 = new PdfPCell()
{
    CellEvent = new DynamicTextbox("textBoxPrintNameRow8"),
    Phrase = new Phrase(boxSeniorOfficerPrinted.Text, timesRoman9Font)
};
tblSection6_Row8.AddCell(cellTextBoxPrintNameRow8);

Phrase blankPhraseSec6Row8_2 = new Phrase();
PdfPCell blankCellSec6Row8_2 = new PdfPCell(blankPhraseSec6Row8_2);
blankCellSec6Row8_2.BorderWidth = 0;
tblSection6_Row8.AddCell(blankCellSec6Row8_2);

PdfPCell cellTextBoxDateRow8 = new PdfPCell()
{
    CellEvent = new DynamicTextbox("textBoxDateRow8"),
    Phrase = new Phrase(boxSeniorOfficerDate.Text, timesRoman9Font)
};
tblSection6_Row8.AddCell(cellTextBoxDateRow8);

doc.Add(tblSection6_Row8);

或者,它们在 KDiff 中,显示唯一的差异是第 8 行的“6”(对于第 6 行)是“8”:

是什么导致了这种不一致的行为(文本框宽度不匹配)?

您可能想尝试使用更有特色的变量名或将这些大块代码移到专用方法中。

您的问题是您使用 tblSection6_Row6 而不是 tblSection6_Row8 的第一个代码块的第二行:

tblSection6_Row6.WidthPercentage = 100;

应该是:

tblSection6_Row8.WidthPercentage = 100;