2013-02-07 156 views
0

在使用iTextSharp更改現有PDF文檔中的AcroForm字段的字體時,我在設置'textfont的行處遇到空指針異常'財產。 雖然我可以使用相同的代碼來設置字段的值。 我已經按照下面的例子來創建我的代碼 https://stackoverflow.com/questions/14748901/custom-font-not-getting-applied-on-existing-pdf-template-itextsharppdfstamper在iTextSharp中設置AcroFields的「textfont」屬性時發生空異常

我的堆棧跟蹤看起來是這樣的:

at iTextSharp.text.pdf.PdfContentByte.SaveColor(BaseColor color, Boolean fill) 
at iTextSharp.text.pdf.PdfContentByte.SetRGBColorFill(Int32 red, Int32 green, Int32 blue) 
at iTextSharp.text.pdf.PdfContentByte.SetColorFill(BaseColor value) 
at iTextSharp.text.pdf.AcroFields.SetFieldProperty(String field, String name, Object value, Int32[] inst) 
at iTextSharpUsage.Utilities.UpdateFontUsingEmbededFont(String inputPdf, String resultPdf) in D:\iTextSharpUsage\iTextSharpUsage\iTextSharpUsage\Utilities.cs:line 229 

我的代碼如下所示:

var pdfReader = new PdfReader(inputPdf); 
string fontsfolder = @"D:\Airmole\airmole.ttf"; 
var pdfStamper = new PdfStamper(pdfReader, new FileStream(resultPdf, FileMode.Create)); 
BaseFont customfont = BaseFont.CreateFont(); 
AcroFields af = pdfStamper.AcroFields; 
List<BaseFont> list = new List<BaseFont>(); 
list.Add(customfont); 
iTextSharp.text.Font bold = new iTextSharp.text.Font(customfont, 13,0,BaseColor.BLACK); 
af.SubstitutionFonts = list; 
foreach (var field in af.Fields) 
{ 
    af.SetField(field.Key, "s"); 
    //this line works fine 
    bool isSuccess = pdfStamper.AcroFields.SetFieldProperty(field.Key, "textcolor ", BaseColor.BLACK , null); 
    //the line bellow throws a null pointer exception 
    bool isSucces1s = pdfStamper.AcroFields.SetFieldProperty(field.Key, "textfont", customfont, null); 
} 

我必須補充這個工作更多的代碼?

在這裏快速更新...由於@Bruno發佈的評論,我解決了問題,此功能在版本5.3.3中正常工作。

+0

這是一個在iText 5.3.4或5.3.5中引入的錯誤。我在三小時前發現並修復了它。要麼使用稍舊版本的iTextSharp,要麼等到下一個版本(計劃於2月14日發佈)。 –

+1

感謝Bruno的回覆。我會嘗試使用舊版本並更新帖子:) –

+0

+1您的評論。請注意,我在Java端修復了這個問題。您可以在C#端引入錯誤的版本上提供所有信息,這是值得歡迎的! –

回答

0

由於您沒有分享PDF,我用一些我創建的PDF進行了一些測試。我發現一種情況,其中/NeedAppearances設置爲true的表單中的預填字段未被展平(它們僅作爲空字段出現)。我想我總是與表格/NeedAppearances虛假(這是默認),因此從未遇到過問題。我解決了這個問題:http://sourceforge.net/p/itext/code/5682/

該修復將在下一個版本中發佈。

相關問題