2

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");
    }
4

1 に答える 1

1

私はあなたがこれを行うことができるとは思わない. あなたの送信は Acrobat からの POST から来ているので、そこにリダイレクトが送信されます。Acrobat は、リダイレクトの処理方法を認識していません。

PDFで「送信」ボタンのクリックイベントで、実際の送信を行うコードの後に​​追加の行を追加すると、うまくいくはずです:

app.launchURL("http://foo.com/Index/000 (your ID)", true);

(「true」を指定すると、Acrobat は新しいブラウザー ウィンドウで URL を開きます。デフォルトは「false」で、Acrobat に URL を読み込みます)。

于 2014-07-23T18:41:23.770 に答える