2015-02-24 125 views
1

我有一个pdf文件我想添加一个新的文本框。到目前为止,我已经能够添加文本框,但是我还没有能够添加它之前的标签。 例如,如果我想插入一个“名称”字段,我想要如下所示显示它 名称:____________ 冒号后是实际的文本字段,“名称”将代表该字段的标签。c#pdf如何设置文本字段标签与iText

到目前为止,我只能插入没有标签的文本框。以下是我正在使用的代码。 有人可以告诉我,如果我从我的代码丢失的东西?

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); 
+0

“标签”基本上是正常的网页内容。因此,只需将标签添加到PdfStamper的OverContent。 – mkl 2015-02-24 15:31:53

+0

感谢您的回复。 我假设通过添加一个带有字段名称的文本字段,标签将显示字段名称的值。 – user3852972 2015-02-24 18:27:06

+0

这是正确的吗? 我使用了OverContent,但标签值未显示。 – user3852972 2015-02-24 18:33:45

回答

2

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

我现在只需要Java开发工具,所以下面的例子是用于iText的Java。 (通常这样的代码很容易转换为C#代码iTextSharp的,大多是通过属性访问代替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(); 
+0

这工作。所以向前迈进,我将不得不为我插入的每个文本字段插入文本。 谢谢 – user3852972 2015-02-25 16:07:13

+0

@ user3852972 *这有效。* - 太好了。因此,您可能需要将答案标记为*接受答案。* – mkl 2015-02-26 10:53:23

+0

我已经标记了,再次感谢! – user3852972 2015-02-26 16:01:00