2

完全な HTML ドキュメント文字列を引数として取り、新しいタブ/ウィンドウで作成された PDF を開くか、ファイルをダウンロードする PDF ジェネレーターがあります。セミコロンで区切られた名前を取り、それから複数の PDF を生成する証明書を作成できるようにするフォームを作成するように依頼されました。これを行うコードは次のとおりです。

$("#certgensubmit").click(function (event) {
    // Get the names to generate certificates for. 
    var names = $("#presented-to").html().split(';');
    $.each(names, function(index, value) {
        if(value.length > 0) {
            var presentedBy = $("#presented-by").html();
            var awardName = $("#award-name").html();
            var presentedDate = $("#presented-date").html();
            var signerName = $("#signer-name").html();

            var html = getCertificateHTML(presentedBy, value, awardName, presentedDate, signerName);
            //console.log(html);
            $("#HtmlContent").val(html);
            $("#pdfform").submit();
        }
    });
});

これは機能しますが、最初の証明書 PDF のみが作成される点が異なります。ただし、毎回コードを処理しています。「console.log(html)」行のコメントを外すと、Chrome のコンソールに正しい出力が表示されます。ループ内で JavaScript で新しいドキュメントを作成し、各ドキュメント内からフォーム送信を実行することで、ある程度の作業を行うことができました。唯一の問題は、PDF ジェネレーターに送信されたフィールド内にテキストを入れるだけで機能しましたが、ジェネレーターが必要とするフィールドに HTML を送信すると完全に失敗したことです。そのため、問題は PDF の作成中に新しいタブを開くことに関係しているようです。これが発生する必要があるため、ユーザーは PDF の入力を受け入れる UI から離れません。

PDF生成の側面にとらわれすぎないでください.jQueryのループごとに異なる値でフォーム送信を複数回トリガーする方法を知る必要があるだけです。残りは文脈のためだけです。

4

1 に答える 1

0

フォームを複数回送信できない場合があります。

したがって、送信機能を投稿に変更し、フォーム タグを削除します。

....

$("#HtmlContent").val(html);

$.post("pdf_creator.php",
{
  input_name:$("#HtmlContent").val()
},
function(data,status){
  //alert("Data: " + data + "\nStatus: " + status);
});

....


<!--<form action='pdf_creator.php' id='pdfform'> //form tags out -->
    <input type='text?' name='input_name' id='HtmlContent' value=''>
<!--</form>-->

これがうまくいくことを願っています。

于 2013-04-23T19:15:05.027 に答える