PDF フォームの送信で問題が発生しましたが、オンラインでヘルプが見つからないようです。
エンドユーザーがダウンロードする PDF フォームがあります。ダウンロード リンクをクリックすると、送信ボタンが PDF に動的に挿入されます。ボタンに添付された URL は、私が作成した ProcessSubmit という ActionResult を指しています。ID とバージョンの 2 つのパラメーターを受け入れます。
ユーザーがフォームに入力して [送信] をクリックした後、Request.InputStream から FDF データを取得し、サーバー上の PDF フォームを更新します。
この時点まで、すべてがうまく機能します。
私の問題は、MVC プロジェクト (Index、ProcessSubmit を実行したのと同じコントローラーから) のページに戻りたいときに発生します。
さまざまなシナリオでさまざまなことが発生します。
Chrome を使用して PDF を表示する:
- 何も起こりません
Adobe PDF を使用して PDF を表示する:
- %APPDATA% にあるファイルを開きます (file:///C:/Users/USERNAME/AppData/Local/Temp/acrord32_sbx/A9RD9D8.htm) - このファイルはログイン ページの壊れたバージョンのようです。
私のコード:
/// <summary>
/// Requests the form.
/// </summary>
/// <param name="id">The identifier.</param>
/// <param name="version">The version.</param>
/// <returns></returns>
public ActionResult RequestForm(Guid id, int version)
{
if (ControllerContext.HttpContext.Request.Url != null)
{
var processSubmitUriString =
Url.Action("ProcessSubmit", "Forms", null, ControllerContext.HttpContext.Request.Url.Scheme);
var processSubmitUrl = String.Format("{0}?id={1}&version={2}", processSubmitUriString, id, version);
var source = _FormsProxy.GetPatientClinicalOrderStream(id, version, processSubmitUrl);
if (source != null)
{
return File(source, "application/pdf", string.Format("YourForm_{0}.pdf", DateTime.Now.ToString("MMddyyyy-HHmmss")));
}
}
return null;
}
/// <summary>
/// Processes the submit.
/// </summary>
/// <param name="id">The identifier.</param>
/// <param name="version">The version.</param>
/// <returns></returns>
public ActionResult ProcessSubmit(string id, int version)
{
using (var sr = new StreamReader(Request.InputStream))
{
var fdfStream = sr.ReadToEnd();
var fields = FDFParser.Parse(fdfStream.Replace(">>", ">>\r\n"));
_FormsProxy.UpdatePatientClinicalOrderFromSubmittedData(new Guid(id), version, fields.Fields);
}
return RedirectToAction("Index");
}