2009-09-21 44 views
3

添加富文本到AcroField我需要添加一些格式化的文本使用iTextSharp的PDF表單字段,我似乎無法弄清楚。這是我目前設置字段的方式,但插入的文本的某些部分需要加粗或具有其他格式。在iTextSharp的

stamper.AcroFields.SetField("fieldName", "fieldValue") 
stamper.FormFlattening = True 

我見過elsewhere,我應該能夠插入一些XML,包括格式化信息,而不是,但我不知道這XML應該是什麼樣子。

下面是該頁面,導致我相信,我想是可以部分:

它仍然郵票實際的XML代碼 到現場與讀者不會 呈現爲富文本在蓋章 PDF。

和工作應對這樣的:

對於工作,你就必須調用 AcroFields.setGenerateAppearances(假)。 請注意,較舊的Reader版本不會生成外觀 。

這個xml應該是什麼樣子,還是有另一種方法來完成這個?

回答

0

前陣子,我加入到設置字段的富文本值的能力iText的。我沒有添加任何渲染代碼來支持它。

這意味着看到富有價值的唯一方式是通過支持它的一個PDF閱讀器(讀卡器/ Acrobat中)。爲了讓他們知道他們需要重建所有現場儀表,您必須致電acroFields.setGenerateAppearances(false)。這會禁用iText的外觀生成,而是請求PDF查看器爲您做。

如果你想扁平全內iText的富文本 [夏普]你將不得不做一些事情扭曲:

  1. 畫出你的富文本轉換成PDF頁面在一個單獨的文件。此頁面的大小應該與字段的大小相匹配。保存它(一個內存流是好的)。
  2. 添加新的PushbuttonField,設置爲LAYOUT_ICON_ONLY。使用與原始文本字段相同的邊界框。將按鈕的背景顏色設置爲null(透明)。
  3. 創建富文本頁面的PdfImportedPage並將此導入的頁面是新PushbuttonField的圖標(模板)。
  4. 拼合。

痛苦的,但有效。

你可以做#1 HTMLWorker和使用原來的富文本/ HTML作爲輸入。

事實上,使用HTMLWorker提供的ColumnText對象將HTML呈現在同一個文檔中而不是新文檔中,然後將其寫出並再次讀回來,您可能會獲得更高的效率。用適當的邊界框從任何舊頁面的DirectContent掀起一個PdfTemplate。

這會吸得更少。

+0

我,希望它是一個有效的答案接受這一點,但我還沒有看在很長一段時間的任何相關代碼並不能對此進行測試。如果其他人看到這個並且可以驗證答案,那就太棒了! – 2011-04-08 19:45:22

+0

我試圖用這種方法沒有成功。臨時文件是空的。代碼可以在:http://stackoverflow.com/questions/10397431/underline-form-field-value-using-itextsharp – 2012-05-02 10:36:13