jsPDF和cordova无法查看pdf文件

jsPDF和cordova无法查看pdf文件,cordova,cordova-plugins,jspdf,Cordova,Cordova Plugins,Jspdf,我正在尝试为我的应用程序生成PDF发票,我可以访问“console.log”(“write success”);”但我就是找不到这个文件。请帮忙!!!如何将其保存到手机中的文件夹 console.log("generating pdf..."); var doc = new jsPDF(); doc.text(20, 20, 'HELLO!'); doc.setFont("courier"); doc.setFontType("normal"); doc.text(20, 30, 'This

我正在尝试为我的应用程序生成PDF发票,我可以访问“console.log”(“write success”);”但我就是找不到这个文件。请帮忙!!!如何将其保存到手机中的文件夹

console.log("generating pdf...");
var doc = new jsPDF();

doc.text(20, 20, 'HELLO!');

doc.setFont("courier");
doc.setFontType("normal");
doc.text(20, 30, 'This is a PDF document generated using JSPDF.');
doc.text(20, 50, 'YES, Inside of PhoneGap!');

var pdfOutput = doc.output();
console.log( pdfOutput );

//NEXT SAVE IT TO THE DEVICE'S LOCAL FILE SYSTEM
console.log("file system...");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {

   console.log(fileSystem.name);
   console.log(fileSystem.root.name);
   console.log(fileSystem.root.fullPath);



fileSystem.root.getFile("test.pdf", {create: true}, function(entry) {
      var fileEntry = entry;
      console.log(entry);

      entry.createWriter(function(writer) {
         writer.onwrite = function(evt) {
         console.log("write success");
      };

      console.log("writing to file");
         writer.write( pdfOutput );
      }, function(error) {
         console.log(error);
      });

   }, function(error){
      console.log(error);
   });
},
function(event){
 console.log( evt.target.error.code );

您正在系统的根路径中保存文件

如果要选择文件夹,请选中

因此,如果您想选择一个公用文件夹,以便可以在应用程序之外检查您的文件,请选中此链接

然后选择private=no的一个

例如:

window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dir) {
          dir.getFile("test.pdf", {create: true, exclusive: false}, function (fileEntry) {
            fileEntry.createWriter(function (writer) {
writer.onwrite = function(evt) {
         console.log("write success");
      };

      console.log("writing to file");
         writer.write( pdfOutput );
      }

            },function () {


              console.log("ERROR SAVEFILE");

            });
          });
        });
您的文件将被放置在sdcard/files目录中

对于打开它,我希望你没有任何pdf查看器插件,因此InApp浏览器是不必使用任何插件的解决方案,并在你的应用程序中打开它

安装

然后打开它:

window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dir) {


          dir.getFile(filename, {create:false}, function(fileEntry) { //EXISTS
            var url = "file:/" + cordova.file.externalDataDirectory + "/test.pdf";
            window.open(url, '_blank');
          }, function() { //NOT EXISTS

          });
        });

我还没有测试它,因为应用浏览器似乎不喜欢太多的本地文件。请发布您的结果

我觉得下面的一行可能是问题所在,window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem){})

在我读过的一些帖子中,有人提到requestfilsystem方法和LocalFileSystem.PERSISTENT参数在android中不起作用,除非设备是根设备

我使用--“window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,successCallback,errorCallback);”

我建议你看看这里,我在Android和iOS设备上发布了相同的文件创建代码


此外,如果你想在你选择的应用程序中打开PDF,你可以使用cordova file opener插件。你可以看看下面的文件开启器示例代码

你可以发布console.log(fileSystem.root.fullPath)的结果吗?我相信没有像“cordova.file.file”这样的东西,如果我错了,请纠正我。嘿,谢谢!!成功了。我的pdf已保存在我的应用程序目录中。非常感谢。你能建议我如何在创建pdf后打开它吗??我给了cordova.file.externalDataDirectory。当然file.file只是我想的一个例子好吧,我会在1小时后发布,因为我不在家,你想怎么打开它?您是否有pspdfkit或pdftron等pdf查看器插件?@user2281415已编辑我的答案,以提供有关pdf查看的更多信息。尝试后将尽快返回inappbrowser@Del它不工作..没有抛出错误,但文件未打开无法尝试..我不知道如何为文件指定uri..cdr.nativeURL+“test.pdf”,即使在应用程序内浏览器方法中,im getting file not found错误..@user2281415我在文章中的第一个链接包含关于cdr.nativeURL的详细信息。任何错误跟踪?你们在设备上测试了吗?实际上,我没有收到任何成功或错误消息