【问题标题】:jsPDF create PDF from .html and open in new windowjsPDF 从 .html 创建 PDF 并在新窗口中打开
【发布时间】:2014-11-30 23:55:17
【问题描述】:

我正在尝试使用 jsPDF 将 .html 文件转换为 PDF 并在新窗口中打开。

我正在生成这样的 PDF:

function PDFFromHTML() {
    var doc = new jsPDF();

    // We'll make our own renderer to skip this editor
    var specialElementHandlers = {
            '#editor': function(element, renderer){
                    return true;
            }
    };

    // All units are in the set measurement for the document
    // This can be changed to "pt" (points), "mm" (Default), "cm", "in"
    doc.fromHTML('ticket.html', 15, 15, {
            'width': 170, 
            'elementHandlers': specialElementHandlers
    });
}

我需要 window.open 之类的东西来在新窗口中打开这个 pdf 文件,但我找不到这样做的方法。

问候,

【问题讨论】:

  • 我意识到 doc.fromHTML('ticket.html' 也不起作用......这个 jsPDF 很难使用......我只需要将我的 .html 转换为 PDF 并打开它在新窗口中

标签: html pdf window pdf-generation jspdf


【解决方案1】:

据我所知,除了直接查看 codes 和现有的 examples 之外,没有太多关于 API 的文档。

通过在doc.fromHTML(..) 之后添加对output API 的调用,我可以让PDF 文件在新窗口中打开,指定dataurlnewwindow 参数,如下所示:

doc.output('dataurlnewwindow');

至于doc.fromHTML('ticket.html')为什么不起作用,再次参考codesource参数需要是:

可以是 HTML 格式的字符串,也可以是对实际 DOM 元素的引用。

所以你可能不得不使用jquery $.get() 方法来加载ticket.html 的内容。本质上,它看起来像:

$.get('ticket.html', function(content){
    doc.fromHTML(content), 15, 15, {'width': 170, 'elementHandlers': specialElementHandlers});
    doc.output('dataurlnewwindow');
}, 'html');

【讨论】:

  • 如果你喜欢这个答案,你能接受和/或投票吗?谢谢。
  • 帮助我正确加载了 ticket.html,但我仍然不知道如何在新窗口中以 PDF 格式打开该文档对象
  • 要在新窗口中打开文档对象,只需在您的代码中添加doc.output('dataurlnewwindow');;在doc.fromHTML()之后。
  • mmmm ..打开一个空白 PDF,在空白 PDF 的中间有“未定义”一词...我认为 $('#ticket-content').load('ticket. html');没有做它的工作......
  • 这里要记住的关键是$.load()(和$.get())是异步AJAX调用。为了简化事情,我更新了我的答案以使用$.get(),并将代码移动到回调函数打开新窗口。这将确保在ticket.html 加载之后打开新窗口。
猜你喜欢
  • 2019-07-02
  • 2013-07-18
  • 2014-07-01
  • 2013-03-07
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多