如何使用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
相关产品推荐
相关产品推荐

