c#pdf如何使用iText设置文本字段标签

时间:2015-02-24 15:19:42

标签: c# pdf itext

我有一个pdf文件我正在尝试添加一个新的文本字段。到目前为止,我已经能够添加文本字段,但是我无法添加它之前的标签。 例如,如果我想插入"名称"字段,我想显示如下所示 名称:____________ 冒号后面是实际的文本字段和" Name"将代表该领域的标签。

到目前为止,我只能插入没有标签的文本字段。以下是我正在使用的代码。 有人可以告诉我,如果我错过了我的代码中的某些内容吗?

PdfStamper stamper = new PdfStamper(reader, out1);

TextField tf = new iTextSharp.text.pdf.TextField(stamper.Writer, new iTextSharp.text.Rectangle(x, h, w, y), "User Name:");

tf.FieldName = "User Name:";                

stamper.AddAnnotation(tf.GetTextField(), page_num);    

选项#2 下面是我尝试使用相同结果的第二个选项。

PdfFormField field = PdfFormField.CreateTextField(stamper.Writer, false, false,50);

//Set the dimensions for the new field
field.SetWidget(new iTextSharp.text.Rectangle(x, h, w, y), PdfAnnotation.HIGHLIGHT_OUTLINE);

field.SetFieldFlags(PdfAnnotation.FLAGS_PRINT);
field.FieldName = "User Name";

stamper.AddAnnotation(field, page_num);  

1 个答案:

答案 0 :(得分:1)

PDF中字段的标签不包含在某些专用标签对象中,它仅仅是页面内容。因此,它必须作为常规内容添加。

我现在只掌握Java开发工具,因此下面的示例是用于iText的Java。 (通常这样的代码很容易转换为iTextSharp的C#代码,主要是通过属性访问替换getter和setter调用。)

PdfReader reader = new PdfReader(SOURCE); 
PdfStamper stamper = new PdfStamper(reader, TARGET); 

TextField tf = new TextField(stamper.getWriter(), new Rectangle(300, 400, 500, 420), "UserName");
stamper.addAnnotation(tf.getTextField(), 1);

PdfContentByte overContent = stamper.getOverContent(1);
BaseFont baseFont = BaseFont.createFont();
overContent.setFontAndSize(baseFont, 12);
overContent.beginText();
overContent.showTextAligned(PdfContentByte.ALIGN_RIGHT, "User Name:", 300, 405, 0);
overContent.endText();

stamper.close ();