2013-11-01 20 views
0

我需要在呈現PDF時按需自定義複選框填充類型。更改iText中複選框字段的外觀

我只能用AcroFields做到這一點(pdfStamper.getAcroFields()),因爲我沒有創建任何新的領域(只是修改),這就是我在範圍上有提供給我的唯一的事情。我嘗試了大約一百件事情,包括下面列出的一件事,這是我如何做到這一點的最佳猜測。

PdfDictionary dictionary = (PdfDictionary) acrofields.getFieldItem("ABCD").getWidget(0).get(PdfName.MK); 
    dictionary.put(PdfName.CA, new PdfString("8", PdfObject.TEXT_UNICODE)); 

ABCD僅用於測試。

我很困難,任何幫助將不勝感激。我能夠改變字典中的值,但是當我將pdf寫入文件時似乎沒有任何影響。其他更改(如將複選框設置爲選中/取消選中)以及填充文本字段。所以我非常驚訝和困惑,爲什麼這不起作用。

回答

2

您正在嘗試更改複選框的標題,但目前還不清楚您期望看到的內容。你想看到文字「8」嗎?在這種情況下,更改標題是不夠的。您還需要更改外觀。您可以在/AP鍵下找到可能的外觀。在複選框的情況下,您會在正常外觀下找到兩種可能的外觀狀態(/N)。這些XObject定義了您在呈現PDF時看到的內容。

+0

我在嘗試將填充類型從複選標記或X更改爲星號。 – rubixibuc

+1

好的,複選標記是在外觀的「開啓」狀態下定義的。您需要替換該「開啓」狀態。僅僅改變CA值是不夠的。 –

+0

非常感謝您的幫助,但是如果沒關係,請給我一個例子,說明如何做到這一點(改變填充的外觀,讓我們說從複選標記到明星)以及使用什麼值。 – rubixibuc