【问题标题】:JavaScript generated download? [closed]JavaScript 生成下载? [关闭]
【发布时间】:2012-12-21 02:17:52
【问题描述】:

在 JavaScript 中有没有办法生成可下载的 PDF 或任何其他可以包含图像和文本的文件?我正在做一个需要此功能的奇怪项目。 JavaScript 嵌入在本地存储的网页中,我可以完全控制用户的环境。如果我以一种或另一种方式配置本地安全设置,有没有办法以某种方式使用 JavaScript 运行本地进程?无论如何,我问的原因如下,这是我的项目,我有点挂了......

我有一个脚本可以遍历用户在运行脚本时选择的分区上的文件系统。然后该脚本获取所有文件的列表并生成从文件系统遍历中找到的所有图像文件的缩略图文件。然后将这些缩略图生成到 HTML 页面中,然后由 firefox 中的脚本打开该页面。我在脚本生成的页面中有 JavaScript,允许用户选中和取消选中每个缩略图旁边的复选框。目标是一旦用户选择了他们感兴趣的所有图像,他们可以按下按钮生成他们选择的图像的报告。我不确定如何生成所述报告。我看到一个类似于我的问题,用 jsPDF 回答,但我不确定这是否是适合我情况的最佳解决方案?我只是在寻找想法和建议!如果需要,我愿意学习其他脚本方法。可以考虑使用服务器端解决方案,但我想远离任何本地服务器等(如 PHP 等)。

【问题讨论】:

  • 您能否提供一个指向 jsPDF 答案的链接? (我只是想确保我的答案不一样。)
  • 我可以确定为什么会投反对票吗?我发错了吗?

标签: javascript python pdf download


【解决方案1】:

可以为此目的使用data: uri,然后使用HTML5 download attribute 使其易于下载。不幸的是,only Chrome currently supports the download attribute。 (尽管据报道支持将在 Firefox 20 中提供)。没有下载属性,用户仍然可以右键保存。

Here's a great example 工作中的这种技术。

【讨论】:

  • 我喜欢这样。发现!芯片芯片cheerio
  • 就目前而言,这看起来最符合我的要求,为用户获取 Chrome 并不是问题,因为我可以用脚本和所有好东西来调用它。只需要对数据进行自我教育:uri 和所有这些好东西,我很高兴能尝试这个!谢谢!
【解决方案2】:

浏览器中的 Javascript 被大量沙盒化以确保安全。您无法从 JS 调用直接生成本地进程。在您的情况下,听起来您也不是在运行服务器,而是通过脚本创建静态站点。

我强烈建议改为运行本地服务器 - 甚至可能脚本中使用类似Flask 之类的东西,这是 Python 中一个很棒的微型服务器框架。这样,您的 Javascript 将能够与您的“服务器”(这只是您的脚本)进行交互,然后可以根据需要即时生成 PDF。

【讨论】:

  • 我一定会去看看 Flask,我只是尽量避开在本地机器上运行的服务/服务器,使用它的观众(考虑到任何人都在挖掘我的项目!)会在计算机知识方面有所不同.从 0 到 100。我试图证明它,我只是知道如果我运行本地服务/服务器,0-10 人会以某种方式对其进行操作......哈哈。反正我会做一些测试。我在沙盒上读到了你,这就是我怀疑的原因。我只是不知道我是否可以做任何事情来改变这一点,因为我完全控制了当地的环境。
【解决方案3】:

如果您cooperate with your server,您可以通过隐藏 iframe 向服务器发送请求中的文件内容,并让服务器回显该文件,并带有标头将其标记为下载。

但是,似乎没有办法只在 javascript 中生成文件并使用“另存为”对话框保存到用户的机器上。看起来有an API in the works for this,但我认为它还没有准备好。

另一个非常不雅的选项是弹出一个带有 svg 代码的警报窗口(基本上是 XML,因此您可以在不需要额外库的情况下构建它)并告诉用户复制并粘贴到记事本中并保存为 . svg。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2011-10-20
    • 1970-01-01
    • 2011-09-06
    • 2013-11-14
    • 2019-07-10
    • 2011-05-31
    相关资源
    最近更新 更多