直接将PDF使用jspdf到文件(Save pdf directly to file using j

2019-10-20 15:54发布

我的剧本是一个Firefox插件,从而可以访问敏感代码像访问文件系统等。
我显示Panel填入html内容,我可以很容易地输入发送给使用该插件代码postMessage
当我运行代码下方的pdf产生并示出了下载提示,所以我可以选择目录来放置文件,但我想使用JavaScript文件直接保存到没有下载提示表示背景的一个文件。
喜欢的东西: 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>

Answer 1:

这应该在你的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);
   }
);

如果你不使用的Add-On 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



Answer 2:

但是,为什么你不想用你的附加? 我认为你不能访问文件系统或类似的事情,与jsPDF或pdf.js( http://mozilla.github.io/pdf.js/ ,这是Mozilla项目),你会能够打印正被显示在窗口上的东西,但不知道你是否可以访问一些本地文件。



文章来源: Save pdf directly to file using jspdf