2015-02-24 98 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