我正在将一个应用程序转换为。Net Core 3.1,在我的类库中,我从现有模板生成一个PDF表单,并用数据填充该表单。在IText7的前身ITextSharp中,PdfAcroForm静态方法“.GetAcroForm()”工作得很好,但在当前版本的IText7(7.1.12)中,会引发空引用异常。我已经尽我所能地遵循文档,但我不确定如何继续。如有任何建议,将不胜感激。
注意:模板路径存在,新文档显示它已正确填写,并且不可能“新建”PdfAcroForm,您需要使用静态。GetAcroForm()方法。
空检查不能解决这个问题,因为对象永远不应该为空。文件表明。如果参数“createNotExist”设置为true,GetAcroForm()方法将创建一个新的表单,我在这里已经完成了。
我在iText GitHub上研究并找到了一个问题,表明这个问题大约在一年前就“修复”了:https://github.com/itext/itext7/pull/44#issue-351612749
以下是准备表格的方法:
public string DocumentGenerator(string templatePath, FormFieldSet[] formFieldSet, bool useSpecailOutputPath)
{
if(!File.Exists(templatePath))
{
throw new Exception("The template file provided does not exist: MC-071(iText)");
}
string newFile = useSpecailOutputPath ?
m_SpecialOutputPath :
Path.GetTempPath() + Guid.NewGuid().ToString() + ".pdf";
try
{
PdfDocument newDocument = new PdfDocument(new PdfReader(templatePath), new PdfWriter(newFile));
PdfAcroForm acroForm = PdfAcroForm.GetAcroForm(newDocument, true); // <=== Exception Thrown Here
foreach (FormFieldSet fs in formFieldSet)
{
acroForm.GetField(fs.FieldName).SetValue(fs.FillValue);
}
// Sets form flattening
acroForm.FlattenFields();
// Closes and writes the form
newDocument.Close();
return newFile;
}
catch { return string.Empty; };
}
如有任何建议,将不胜感激
我也遇到了同样的问题,在深入挖掘iText7的内部对象和方法之后,我终于“解决”了我的问题。
显然,iText有一些内部错误/异常,它们只是“跳过”和“推过去”,因为我意外地意识到我在Visual Studio中禁用了“仅启用我的代码”,所以我的系统试图调试iText7的代码以及我的代码。我在Visual Studio设置(工具)中重新启用它的那一刻
所以我花了四个小时试图解决他们代码中的一个问题,但是他们显然找到了一些方法来解决这个问题,并且无论如何都要通过这个方法,即使是在空引用失败的情况下。
我的转换为PDF功能现在运行良好。
这只是一个更新给任何人寻找这个问题。这是一个已知的问题,在当前的开发分支中已修复。在更正异常之前,可以安全地绕过visual studio中的异常。这对功能没有负面影响,是原始iText7源中错误返回的结果。
这是我的客户端代码 这是我的Rest控制器代码: 如果我在调用后使用 String.class 作为返回类型,则相同的代码也有效。但不是响应实体类。我做错了什么,如果我需要客户端也相同的响应实体
但是,该方法(authContext.AcquireTokenAsync)与其他参数(如客户端id等)很好地配合使用,如下所示。result=await authContext.AcquireTokenSilentAsync(ResourceId,clientId); UWP是否对具有ClientCredential(clientid,key)的AuthContext.AcquireTokenSi
我试图在运行在Android中的SubscriptionClient实例上调用RegisterMessageHandler方法。 在将消息发布到特定主题(通过自动测试)20秒左右之后,我在我的Android应用程序中收到了几个超时异常,该应用程序实际上包含了SubscriptionClient实例的RegisterMessageHandler。 输出窗口 这里有个错误: **System.Time
> 单击 受保护得空onPrepareDialog(int id,Dialog Dialog) 受保护的对话框onCreateDialog(int id) 如果我对timepickerdialog代码做了什么错误,请告诉我。
我正在尝试添加一个网络安全配置文件到一个Android应用程序构建的Xamarin工具。(Xamarin表格版本2.5.1.527436)。 我遵循了本文中的步骤:https://devblogs.microsoft.com/xamarin/cleartext-http-android-network-security/ 但是,在启动时,对Xamarin.Forms.Platform.Androi
问题内容: MyClass.java: 编译MyClass.java文件的SimpleCompileTest.java的清单。 SimpleCompileTest.java: 我正在执行SimpleCompileTest类并获取NullPointerException。ToolProvider.getSystemJavaCompiler()返回null。有人可以告诉我代码有什么问题吗 问题答案: