Javascript 将字符串内容写入PDF

Javascript 将字符串内容写入PDF,javascript,asp.net-mvc-3,pdf-generation,Javascript,Asp.net Mvc 3,Pdf Generation,我已经构建了为用户查看的报告生成pdf文件的功能 因此,它目前所做的是当用户单击“打印pdf”按钮时 获取需要打印的div的html内容 使用带有POST的jQueryAjax方法将此内容发送到控制器的方法 在控制器中,它用html文档字符串(如,等)包装内容。此外,我还在其中添加了一些样式 然后,这个html字符串被传递给我正在使用的工具之一,该工具为这个字符串返回pdf字节 然后,它将这些字节作为pdf文件保存在文件夹中,并返回该文件的路径 Jquery-on-success方法打开该文件路

我已经构建了为用户查看的报告生成pdf文件的功能

因此,它目前所做的是当用户单击“打印pdf”按钮时

  • 获取需要打印的div的html内容
  • 使用带有POST的jQueryAjax方法将此内容发送到控制器的方法
  • 在控制器中,它用html文档字符串(如
    等)包装内容。此外,我还在其中添加了一些样式
  • 然后,这个html字符串被传递给我正在使用的工具之一,该工具为这个字符串返回pdf字节
  • 然后,它将这些字节作为pdf文件保存在文件夹中,并返回该文件的路径
  • Jquery-on-success方法打开该文件路径的窗口
  • 这一切都很好

    问题是

  • 它不会像执行所有处理一样立即打开窗口,然后在成功时打开窗口
  • 另外,我想知道我是否做得正确,或者做了一些额外的不必要的步骤,我的意思是,有没有更好的方法或短的方法来做到这一点
  • 在获取div的内容后,对字符串进行一些更改,以直接在新窗口中显示为pdf内容等,以避免服务器处理,这可能吗

    到目前为止,我一直试图用
    data:application/pdf
    直接显示内容,但没有成功


    如果这是不可能的,我想避免保存pdf文件,而只是显示将作为pdf打开的视图,可能是通过设置其
    内容类型
    ,这是可能的吗?

    您所做的是最好的方法。(所有)浏览器都不具备将html转换为pdf的功能,因此您不能仅仅命令它们以pdf格式打开页面。您必须从服务器提供pdf文件。要获得更多控制,您可以从指定url的脚本提供文件,并添加适当的标题:

    header('Content-type: application/pdf');
    header('Content-Disposition: inline; filename="the.pdf"'); // second parameter is the name of the file
    
    内容类型意味着浏览器将尝试使用适合此MIME类型的程序打开它。 内联内容处置意味着浏览器将尝试在浏览器中打开它

    服务器工作时,只需向用户显示“正在加载”图像。这样,用户将知道发生了什么,他需要等待