2

我正在尝试使用以下代码使用 FileOpener2(通过 ng-cordova)打开 PDF 文件:

$cordovaFile.checkFile(cordova.file.dataDirectory, attachmentPath)
    .then((fileEntry) => {
        // success
        fileEntry.getMetadata((metadata) => {
            // metadata.size is in bytes
            var megabyteSize = metadata.size / 1048576;

            if (megabyteSize > 5) {
                var path = cordova.file.dataDirectory + attachmentPath;
                console.log(path); // prints: file:///data/data/com.ionicframework.enhatch146189/files/attachments/CS-353ES_CS-420ES_Eng.pdf which is correct

                $cordovaFileOpener2.open(path, 'application/pdf').then(() => {
                    console.log("Opened!") // prints
                }, (error) => {
                    console.log(error);
                    usePDFJs(); // tries to render PDF in app with PDFJs
                });
            } else {
                usePDFJs();
            }
        })
    }, function (error) {
        // error
        console.error(error);
    });

发生了什么让我感到困惑:它提示我“在 Adob​​e Reader 中打开此文件?” 并列出其他 PDF 查看器,控制台打印“已打开!”

但是,无论我用什么打开任何 pdf,都会出现某种错误,例如“无法打开此 PDF 文件”。

任何人都可以看到这段代码有问题吗?

4

1 回答 1

3

显然,如果您cordova.file.dataDirectory在 android 上使用,则无法在其他应用程序中打开这些文件或将它们附加到电子邮件中。愚蠢的错误——编码太快,文档阅读太少。使用cordova.file.externalApplicationStorageDirectory解决了这个问题。

于 2015-07-02T02:38:58.770 回答