2017-02-01 22 views
0

現在、PDFMakeを使用して作成したPDFを書き込み、そのファイルを電子メールに添付しようとしています。私はこれをしようと6時間を費やして、私は間違いを取得し続けます。イオン2ファイルストレージ

以下は、PDFをエクスポートするための私のコードです。私は、createPDF.open()を使用してサーブ内のPDFをテストし、うまくいきました。私はまた、コンソールにBase64データを印刷しました。ここで

exportPDF() { 
    console.log("ExportPDF()") 
    this.pdf = pdfMake; 
    // For use in browser(web) 
    //this.pdf.createPdf(getDocDefinition(this.issues, this.project, this.report)).open(); 
    let data : string; 
    let newPDF; 


    this.pdf.createPdf(getDocDefinition(this.issues, this.project, this.report)).getBase64((buffer) => { 
     data = buffer; 
     console.log("newPDF: " + data) 
    }); 

    // this.pdf.createPdf(getDocDefinition(this.issues, this.project, this.report)).getBuffer((buffer) => { 
    // data = buffer.toArrayBuffer(); 
    // console.log("newPDF: " + data) 
    // }); 


    // Platforms 
    if (this.plat.is('ios')) { 
     console.log("Platform: ios") 

     let file = "testFingering.pdf" 

     console.log(cordova.file.cacheDirectory); 

     File.removeFile(cordova.file.cacheDirectory, file); 
     File.writeFile(cordova.file.cacheDirectory, file, data).then(() => { 
     // Success! 
     console.log("writeFile: success!") 

     SocialSharing.share("tits", "tits", cordova.file.cacheDirectory + file).then(() => { 
      // Success! 
      console.log("shareViaEmail: success!") 
     }).catch((err) => { 
      // Error! 
      console.log("shareViaEmail: fail! " + err) 
     }); 

     }).catch((err) => { 
     // Error! 
     console.log("writeFile: fail! " + JSON.stringify(err)); 
     }); 

    } else if (this.plat.is('android')) { 
     console.log("Platform: android") 

    } else if (this.plat.is('windows')) { 
     console.log("Platform: windows") 

    } else { 
     console.log("Platform: web") 

    } 

    } 

私が受けていたエラーは以下のとおりです。

2017-01-31 20:40:12.997343 CMTA[1725:417453] writeFile: fail! {"code":12,"message":"PATH_EXISTS_ERR"} 
2017-01-31 20:40:13.013456 CMTA[1725:417453] writeFile: fail! {"code":"Invalid parameter type"} 

私は一度だけ、このコードを実行していますので、1)私は、なぜそれが2つのエラーをログに記録されるかわかりません。

2) "PATH_EXISTS_ERR"はパスが既に存在することを意味しますが、コードを見ると、ファイルを削除して毎回作成しています。

3)入力するパラメータは何ですか?それは "テキスト"を受け入れると言いますが、別のものを使用していなければなりませんか?私はこのアプリケーションのIonic 1バージョンで何をしたのかという理由で、前にToBufferArray()を試しましたが、それはもう動作しません。

私はこれが終わりに私をイライラさせるので、私は大いに助けていただきたいと思います。

答えて

0

私はすべてを手に入れました。私は2つのステップを踏まなければならなかった。

1)私はcreatePDF()呼び出しからFile.writeFile()を応答に移動しなければなりませんでした。

2)私はgetBase64()の代わりにgetBuffer()を実行してから、toBufferArray()のインターネット上で関数を見つけました。ここで

は、最終的なコードです:

exportPDF() { 
    console.log("ExportPDF()") 
    this.pdf = pdfMake; 
    // For use in browser(web) 
    //this.pdf.createPdf(getDocDefinition(this.issues, this.project, this.report)).open(); 
    let data; 
    let file = "test11.pdf"; 
    let newPDF; 


    this.pdf.createPdf(getDocDefinition(this.issues, this.project, this.report)).getBuffer((buffer) => { 
     data = this.toArrayBuffer(buffer); 
     console.log("newPDF: " + data); 
     console.log(cordova.file.cacheDirectory + file); 
     File.removeFile(cordova.file.cacheDirectory, file); 
     File.writeFile(cordova.file.cacheDirectory, file, data, true).then(() => { 
     // Success! 
     console.log("writeFile: success!"); 

     SocialSharing.share("tits", "tits", cordova.file.cacheDirectory + file).then(() => { 
      // Success! 
      console.log("shareViaEmail: success!") 
     }).catch((err) => { 
      // Error! 
      console.log("shareViaEmail: fail! " + err) 
     }); 

     }).catch((err) => { 
     // Error! 
     console.log("writeFile: fail! " + JSON.stringify(err)); 
     }); 
    }); 

    // this.pdf.createPdf(getDocDefinition(this.issues, this.project, this.report)).getBuffer((buffer) => { 
    // data = buffer.toArrayBuffer(); 
    // console.log("newPDF: " + data) 
    // }); 

    } 

    toArrayBuffer(buf) { 
    let ab = new ArrayBuffer(buf.length); 
    let view = new Uint8Array(ab); 
    for (let i = 0; i < buf.length; ++i) { 
     view[i] = buf[i]; 
    } 
    return ab; 
    }