繁体   English   中英

在ionic中将Pdf附加到电子邮件撰写器

[英]Attach Pdf to email composer in ionic

我正在尝试将Blob pdf文件附加到电子邮件撰写器。 但这对我不起作用。

function createPdf(reportData){
         return $q(function(resolve, reject) {
            var dd = createDocumentDefinition(reportData);
            var pdf = pdfMake.createPdf(dd)
            .getBuffer(function(buffer){
                var utf8 = new Uint8Array(buffer); // Convert to UTF-8... 
                binaryArray = utf8.buffer; // Convert to Binary...
                $cordovaFile.writeFile(cordova.file.dataDirectory, "file.pdf", binaryArray, true)
                .then(function (success) {
                   alert('Pdf created'); 
                console.log("pdf created");
                }, function (error) {
                console.log("error");
                });
            });
        });
    }

此代码有效,并且警告pdf创建。

pdfGenerator.createPdf(reportbody)
      .then(function(pdf){
        $ionicLoading.hide();
        var blob = new Blob([pdf], {type: 'application/pdf'});
        $scope.pdfUrl = URL.createObjectURL(blob);
            var email = {
           to: 'max@mustermann.de',
           cc: 'erika@mustermann.de',
           bcc: ['john@doe.com', 'jane@doe.com'],
           attachments: [$scope.pdfUrl],
           subject: 'Cordova Icons',
           body: 'How are you? Nice greetings from Leipzig',
           isHtml: true
         };

        $cordovaEmailComposer.open(email).then(null, function () {
          // user cancelled email
        });
      },function(error){
        console.log(error);
      });

当我控制台cordova.file.dataDirectory时,它给了我cdvfile://路径而不是本机路径。 因此,如何将文件附加到邮件。

是的,我找到了解决我问题的方法。 我在这里提到了代码,希望对您有所帮助。

function createPdf(reportData){
    return $q(function(resolve, reject) {
        var dd = createDocumentDefinition(reportData);
        var pdf = pdfMake.createPdf(dd)
        .getBuffer(function(buffer){
            var utf8 = new Uint8Array(buffer); // Convert to UTF-8... 
            binaryArray = utf8.buffer; // Convert to Binary...
            resolve(binaryArray);
        });
    });
}

在控制器中

pdfGenerator.createPdf(reportbody)
    .then(function(pdf){
        $ionicLoading.hide();
        $cordovaFile.writeFile(cordova.file.externalApplicationStorageDirectory,'mydoc.pdf',pdf,true).then(function(success){
            console.log("File created");
        })
        var email = {
           to: 'max@mustermann.de',
           cc: 'erika@mustermann.de',
           bcc: ['john@doe.com', 'jane@doe.com'],
           attachments: [externalApplicationStorageDirectory+'mydoc.pdf'],
           subject: 'Cordova Icons',
           body: 'How are you? Nice greetings from Leipzig',
           isHtml: true
         };

        $cordovaEmailComposer.open(email).then(null, function () {
          // user cancelled email
        });
},function(error){
    console.log(error);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM