我有一个 PDF 生成器,它将完整的 HTML 文档字符串作为参数,然后打开在新选项卡/窗口中创建的 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 每个循环中使用不同的值多次触发表单提交。其余的只是为了上下文。