也许有人现在如何通过PDF格式的StrikeThrough数据?
我试过
AcroFields pdfFromFields = pdfStamper.AcroFields;
pdfFormFields.SetFieldProperty(fieldname, "sthhere", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12 , Font.STRIKETHRU),null);
pdfFormFields.SetField(fieldname, fieldvalue);
但出现错误 “无法将iTextSharp.text.Font类型的对象强制转换为输入iTextSharp.text.pdf.BaseFont” 谢谢你的帮助。
我用过
Chunk c1 = new Chunk ("insideText", FonctFactory.GetFont(FonctFactory.TIMES_ROMAN,12,Font.STRIKETHRU));
AcroFields form = stamper.getAcroFields();
Rectangle rect = form.getFieldPositions("fieldName").ElementAt(0).position;
ColumnText ct = new ColumnText(canvas);
ct.SetSimpleColumn(rect);
ct.AddElement(c1);
ct.Go();
并添加了Text低于中间fielde位置并且剩下太多。怎么过于集中呢?
答案 0 :(得分:2)
在iText中使用Font.STRIKETHRU
作为字体属性是一个设计缺陷。我负责那个糟糕的设计选择, mea culpa 。如果您查阅ISO-32000-1,您会注意到strikethru不是字体(BaseFont
)的属性,也不可能在字段上设置该属性。因此,除非您找到包含此类字符的字体(如评论中的mkl所示),否则无法使用“描边”内容填写字段。
根据您想要获得的最终结果,还有另外两种可能的解决方法。
/DA
)。在这个外观中,您可以绘制文本和一条穿过它的线。我不打算给你一个如何做到这一点的例子,因为它不是一个好的解决方案:表单保持交互性,当最终用户点击该字段时,Adobe Reader将用一个外观替换/DA
在观众中动态创建。此外观将显示没有strikethru的文本。ColumnText
在这些坐标处绘制文本。有关示例,请参阅我对此问题的回答:How to continue field output on a second page?