将字符串内容写为PDF

时间:2013-04-19 13:03:43

标签: javascript asp.net-mvc-3 pdf-generation

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

所以它目前所做的是当用户点击打印pdf按钮时

  1. 获取需要打印的div的html内容
  2. 使用带有POST的jquery ajax方法将此内容发送到控制器的方法
  3. 在控制器中,它使用html文档字符串包装内容,如<html><body>等。此外,我还添加了一些样式。
  4. 然后将这个html字符串传递给我正在使用的其中一个工具,它返回给我这个字符串的pdf字节
  5. 然后将这些字节作为pdf文件保存在文件夹中,并返回该文件的路径。
  6. Jquery然后成功方法打开了该文件路径的窗口。
  7. 这一切都很好。

    问题是

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

      到目前为止,我已尝试直接使用data:application/pdf显示内容,但这不起作用。

      如果无法做到这一点,我打算避免保存pdf文件但只显示将以pdf格式打开的视图,可以设置为content-type,这可能吗?

1 个答案:

答案 0 :(得分:2)

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

header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"'); // second parameter is the name of the file

内容类型表示浏览器会尝试使用适合此MIME类型的程序打开它。 内容处理内联意味着浏览器将尝试在浏览器中打开它。

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