在使用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中正常工作。
這是一個在iText 5.3.4或5.3.5中引入的錯誤。我在三小時前發現並修復了它。要麼使用稍舊版本的iTextSharp,要麼等到下一個版本(計劃於2月14日發佈)。 –
感謝Bruno的回覆。我會嘗試使用舊版本並更新帖子:) –
+1您的評論。請注意,我在Java端修復了這個問題。您可以在C#端引入錯誤的版本上提供所有信息,這是值得歡迎的! –