问题描述
我在 C# 中创建了一个 .net core web api 控制器,它从表单上的提交按钮接受 FDF 格式的 PDF 表单数据。 因为我的控制器试图将数据存储在数据库中,所以我想向表单返回成功/失败状态,该状态应该显示给用户。 该表单是常规的 Acrobat 表单(因此不是 Web 表单)并且是从浏览器填写的。 我有 read 关于返回带有 /Status 的 FDF 数据,但还没有找到如何将该信息转换为 web api,这对我来说很新。
解决方法
您可以返回 Adobe 接受的 PdfResult。返回值必须基于提交文档的位置。这是我的 mvc 控制器
[AllowAnonymous]
[HttpPost]
public PdfResult SubmitForm(string Browser)
{
using (var sr = new StreamReader(Request.InputStream))
{
var fdfStream = sr.ReadToEnd();
var fieldsDict = _pdfFormService.ExtractFieldsText(fdfStream);
var formJson = JsonConvert.SerializeObject(fieldsDict);
var clientId = fieldsDict["client-id"];
var agencyId = fieldsDict["agency-id"];
var username = fieldsDict["username"];
var formId = fieldsDict["form-id"];
_pdfFormService.SubmitForm(int.Parse(agencyId),username,int.Parse(clientId),int.Parse(formId),formJson);
var document = PdfHelper.BuildSuccessPdf();
if (Browser == "Browser")
return document.ExportAsActionResult("success.pdf",HttpContext.ApplicationInstance.Response,HttpReadType.Open);
else
return document.ExportAsActionResult("success.pdf",HttpReadType.Save);
}
}
我找到了 PDF 结果的定义和 document.ExportAsActionResult 扩展方法 here。