在JavaScript中是否有办法生成可下载的PDF或任何其他可以包含图像和文本的文件?我正在开发一个需要此功能的奇怪项目。 JavaScript嵌入在本地存储的网页中,我可以完全控制用户的环境。如果我以这种或那种方式配置本地安全设置,有没有办法以某种方式使用JavaScript运行本地进程?无论如何,我问的原因如下,这是我的项目,我有点挂在...
我有一个脚本,用于在用户运行脚本时选择的分区上遍历文件系统。然后,该脚本获取所有文件的列表,并生成从文件系统遍历中找到的所有图像文件的缩略图文件。然后将这些缩略图生成到HTML页面中,然后由firefox中的脚本打开。我在脚本生成的页面中有JavaScript,允许用户选中并取消选中每个缩略图旁边的复选框。目标是一旦用户选择了他们感兴趣的所有图像,他们就可以按下按钮来生成他们选择的图像的报告。我不知道如何生成报告。我看到了类似于我用jsPDF回答的问题,但我不确定这是否是我情况的最佳解决方案?我只是在寻找想法和建议!如果需要,我愿意学习其他脚本方法。可以考虑服务器端解决方案,但我想远离任何本地服务器等等(如PHP和东西。)。
答案 0 :(得分:2)
您可以使用data:
uri用于此目的,然后使用HTML5 download attribute以便于下载。不幸的是,only Chrome currently supports the download attribute。 (尽管据报道支持Firefox 20)。如果没有下载属性,用户仍然可以右键单击进行保存。
Here's a great example这种技术在工作中。
答案 1 :(得分:1)
浏览器中的Javascript 严重沙箱以确保安全。你无法从JS调用直接生成本地进程。在您的情况下,听起来您运行的不是服务器,而是通过脚本创建静态站点。
我强烈建议运行本地服务器 - 甚至是在脚本中,使用类似Flask的东西,这是Python中的一个优秀的微服务器框架。这样,您的Javascript就可以与您的“服务器”(这只是您的脚本)进行交互,然后可以根据需要动态生成PDF。
答案 2 :(得分:1)
如果您cooperate with your server,您可以在请求中将文件的内容发送到隐藏的iframe中的服务器,并让服务器回显该文件,并将标题标记为下载。
但是,似乎无法在javascript中生成文件并使用“另存为”对话框保存到用户的计算机。看起来有an API in the works for this,但我认为它还没准备好。
另一个非常不优雅的选择是弹出一个带有svg代码的警报窗口(基本上是XML,因此你可以在不需要额外库的情况下构建它)并告诉用户复制并粘贴到记事本中并保存为。 SVG。