首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字符串内容写入PDF格式

将字符串内容写入PDF格式
EN

Stack Overflow用户
提问于 2013-04-19 13:03:42
回答 1查看 1K关注 0票数 2

我已经构建了生成报告用户视图的pdf文件的功能。

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

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

一切都很顺利。

问题是

  1. 它不会立即打开窗口,因为它会做所有的处理,然后在成功的情况下,它会打开窗口。
  2. 另外,我想知道我是正确地做了这一切,还是做了一些额外的不必要的步骤,由此我的意思是,有没有更好的方法或短的方法来做这件事。

比如在获得div的内容之后,对字符串进行一些更改,将其直接显示在新的窗口中,如pdf内容等,以避免服务器处理,这可能吗?

到目前为止,我一直试图用data:application/pdf直接显示内容,但这并不奏效。

如果这是不可能的,我想避免保存pdf文件,但只是显示的观点,将开放为pdf,可能是通过设置其content-type,这是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2013-04-19 15:15:18

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

代码语言:javascript
运行
复制
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"'); // second parameter is the name of the file

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

当服务器工作时,只需向用户显示“加载”图像即可。这样,用户就会知道事情正在发生,他需要等待。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16105284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档