2016-08-02 103 views
0

我一直在使用PDFSharp來使用AcroForm字段填充PDF。我可以使用類似這樣的代碼來設置表單字段的值:無法使用PDFSharp更改AcroForm字段的字體

PdfTextField txtField = (PdfTextField)oldPDF.AcroForm.Fields["fieldname"]; 
    txtField.Value = new PdfString("my form value"); 

我的問題是,當我試圖改變字體爲將進入該領域的文本。我能夠訪問該字段的字體屬性,它讓我設置這樣的:

txtField.Font = new XFont("Courier New", 16, XFontStyle.Bold); 

然而,當我打開保存的PDF,它默認的字體回不同的字體。我也嘗試過使用其他字體,例如「Arial」或「Helvetica」,以及不同的大小,但似乎沒有任何關係。

有趣過,當我打開PDF之前我就與福昕PhantomPDF改變它,我可以檢查表單字段並看到字體設置爲宋體

enter image description here

我填的是後PDF並保存它,然後看看這些字段,它將顯示設置爲Helvetica 10,無論我嘗試在我的代碼中設置什麼字體。

enter image description here

如果我手動編輯與福昕PhantomPDF表單字段並改變這種方式,字體,它會堅持,但我想這樣做的代碼。這可能嗎?

回答

0

不知道這是否正確,但我可以通過訪問AcroForm字段字典中的「/ DA」默認apperance元素並對其進行修改來更改字體。

if(txtField.Elements.ContainsKey("/DA") == false) 
     { 
     txtField.Elements.Add("/DA", new PdfString("/CoBo 12 Tf 0 g")); 
     } 
    else 
     { 
     txtField.Elements["/DA"] = new PdfString("/CoBo 12 Tf 0 g"); 
     } 

我覺得「字體」屬性是正確的方式來做到這一點,但我不能讓這種方法工作。