【发布时间】:2015-04-15 16:24:36
【问题描述】:
源自 Jeff S 的方法 here,我可以向 PDF 页面添加“复选框”,如下所示:
PdfPTable tblFirstRow = new PdfPTable(5);
tblFirstRow.SpacingBefore = 4f;
tblFirstRow.HorizontalAlignment = Element.ALIGN_LEFT;
. . . // code where textboxes are added has been elided for brevity
PdfPCell cell204Submitted = new PdfPCell()
{
CellEvent = new DynamicCheckbox("checkbox204Submitted", "204 Submitted or on file")
};
tblFirstRow.AddCell(cell204Submitted);
doc.Add(tblFirstRow);
DynamicCheckbox 类,基于 Jeff S 的 CustomCellLayout 类,是:
public class DynamicCheckbox : IPdfPCellEvent
{
private string fieldname;
private string cap;
public DynamicCheckbox(string name, String caption)
{
fieldname = name;
cap = caption;
}
public void CellLayout(PdfPCell cell, Rectangle rectangle, PdfContentByte[] canvases)
{
PdfWriter writer = canvases[0].PdfWriter;
RadioCheckField ckbx = new RadioCheckField(writer, rectangle, fieldname, "Yes");
ckbx.CheckType = RadioCheckField.TYPE_CHECK;
ckbx.Text = cap;
PdfFormField field = ckbx.CheckField;
writer.AddAnnotation(field);
}
}
我的问题是复选框的文本(分配给 ckbx.Text 的字符串)没有显示。复选框(超大)占据表格行中的最后一个单元格,但没有(可见的)伴随文本。
我的代码缺少什么?
注意:我试图通过这样做来减小复选框的大小:
Rectangle tangle = new Rectangle(20, 20);
//RadioCheckField ckbx = new RadioCheckField(writer, rectangle, fieldname, "Yes");
RadioCheckField ckbx = new RadioCheckField(writer, tangle, fieldname, "Yes");
...但是该尝试失败了 - 使用该代码,我什至无法在生成的 PDF 文件中“找到”复选框 - 在第 5 列中随意点击不会出现任何复选框...
【问题讨论】:
标签: checkbox pdf-generation itextsharp rectangles