You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用iTextSharp 5.5.13添加带勾选标记的复选框

解决iTextSharp复选框勾选显示对勾而非叉号的问题

我懂你现在的困扰——用iTextSharp 5.5.13生成的复选框,勾选后居然显示叉号,而你想要的是标准的对勾标记对吧?别担心,咱们只需要自定义勾选状态的PdfAppearance,手动绘制对勾就能搞定。

你之前的代码已经搭好了基础,只是缺少了绘制对勾的关键步骤。下面是完整的修正代码,我会给你标注关键改动:

document.Open();
PdfContentByte cb = writer.DirectContent;
iTextSharp.text.Rectangle rect;
PdfFormField Field1;

// 创建两个外观:索引0是未勾选,索引1是勾选
PdfAppearance[] onOff = new PdfAppearance[2];

// 未勾选状态:只绘制边框
onOff[0] = cb.CreateAppearance(20, 20);
onOff[0].Rectangle(1, 1, 18, 18); // 边框留1px边距
onOff[0].Stroke();

// 勾选状态:先画边框,再绘制对勾
onOff[1] = cb.CreateAppearance(20, 20);
// 先画和未勾选一样的边框
onOff[1].Rectangle(1, 1, 18, 18);
onOff[1].Stroke();
// 设置对勾的颜色(这里用黑色,你可以改成需要的颜色)
onOff[1].SetRGBColorStroke(0, 0, 0);
// 绘制对勾路径:调整坐标让对勾在框内居中
onOff[1].MoveTo(3, 10);
onOff[1].LineTo(8, 15);
onOff[1].LineTo(17, 5);
onOff[1].Stroke(); // 描边绘制对勾,如果想要实心的可以用FillStroke

// 创建复选框字段
rect = new iTextSharp.text.Rectangle(100, 700, 120, 680); // 字段位置和大小
Field1 = PdfFormField.CreateCheckBox(writer, rect, "checkbox1", "Off", PdfFormField.TYPE_CHECKBOX);
// 将自定义外观绑定到字段的On/Off状态
Field1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", onOff[0]);
Field1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "On", onOff[1]);

// 将字段添加到文档
writer.AddAnnotation(Field1);
document.Close();

关键要点说明:

  • 自定义勾选外观:原来的代码里onOff[1]只设置了填充色但没绘制对勾,iTextSharp默认会用叉号填充,所以咱们手动用MoveTo和LineTo绘制对勾路径,再用Stroke渲染出来。
  • 坐标调整:因为外观尺寸是20x20,我设置的对勾坐标是从(3,10)到(8,15)再到(17,5),你可以根据需求微调这些数值,让对勾看起来更协调。
  • 颜色控制:用SetRGBColorStroke可以设置对勾的线条颜色,如果想要实心对勾,把Stroke()改成FillStroke()即可。

这样修改后,你的复选框勾选时就会显示对勾,而不是默认的叉号啦!

内容的提问来源于stack exchange,提问作者vinod karampuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:51:40