-2

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

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

4

3 回答 3

2

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

这是这种技术在工作中的一个很好的例子

于 2012-12-21T02:36:36.170 回答
1

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

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

于 2012-12-21T02:22:57.533 回答
1

如果您与您的服务器合作,您可以将请求中的文件内容发送到隐藏 iframe 中的服务器,并让服务器回显该文件,并带有将其标记为下载的标头。

但是,似乎没有办法只在 javascript 中生成文件并使用“另存为”对话框保存到用户的机器上。看起来有一个 API 正在为此工作,但我认为它还没有准备好。

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

于 2012-12-21T02:26:37.743 回答