使用jspdf将pdf直接保存到文件

时间:2014-08-10 21:49:17

标签: javascript firefox pdf firefox-addon jspdf

我的脚本是一个Firefox插件,因此可以访问敏感代码,例如访问文件系统等 我显示填充了Panel内容的html,我可以使用postMessage轻松地将输入发送到插件代码。 当我运行下面的代码时,会生成pdf,并显示下载提示,以便我可以选择放置文件的目录,但是我想将文件直接保存到后台的文件中而不是下载提示显示。
类似于:doc.saveToFile("/path/to/file") // custom method in my addon code
使用jsPDF对象可以实现吗?

<html>

    <head>
        <script type='text/javascript' src='jspdf.source.js'></script>
    </head>

    <body>
        Hey
        <script>
        var doc = new jsPDF();
        doc.text(20, 20, 'Hello bob');
        doc.save('test.pdf');
        </script>

    </body>
</html>

2 个答案:

答案 0 :(得分:0)

但为什么你不想使用你的附加组件?我认为你无法使用jsPDF或pdf.js(http://mozilla.github.io/pdf.js/,这是一个mozilla项目)访问文件系统或类似的东西,你将能够打印正在显示的东西。窗口,但不确定您是否可以访问某些本地文件。

答案 1 :(得分:0)

这应该适用于您的Firefox附加代码:

const { OS } = require("resource://gre/modules/osfile.jsm");

var pathToFile = OS.Path.join("path", "to", "file.pdf");

var doc = new jsPDF();
doc.text(20, 20, 'Hello bob');

var ab = doc.output('arraybuffer');
var u8 = new Uint8Array(ab);

OS.File.writeAtomic(pathToFile, u8).then(
   function()
   {
       alert('File written!');
   },
   function(e)
   {
       alert('Error ' + e);
   }
);

如果您没有使用附加SDK,而是使用普通扩展程序,请将第一行替换为:

const { OS } = Components.utils.import("resource://gre/modules/osfile.jsm", {});

有关OS.File的更多信息,请查看此内容:https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread