2016-11-13 11 views
0

私のプロジェクトにはpdf.jsが使用されており、暗号化されたpdfの問題に直面しています。私はパスワードを提供するためにPDF.js passwordCallback関数を使用しています。ここでPDF.js - 誤ったパスワードが入力された場合のパスワードコールバックの問題

PDFJS.getDocument(file, null, passwordCB, null).then(function (res) { 
console.log("Document Decrypted); 
}); 

はPasswordCallbackの機能は、間違ったパスワードが提供されている場合、制御はpasswordCB機能のうち、取得しない

var passwordCB = function (passwordFunc, reason) { 
    if (reason === 1) { 
    passwordFunc(pdfpassword); 
    } else { 
    console.log("Wrong Password"); 
    } 
}; 

です。それは有効なパスワードが提供されるまで立ち往生します。

ユーザーが間違ったパスワードを入力すると、パスワードが間違っていて新しいパスワードを取得する必要があることを伝える必要があります。私はデフォルトのjavascriptプロンプトを使用していません。

passwordCallback関数を解除してgetDocument()の約束に戻る方法はありますか?

また、ソースコードから、passwordCallbackは推奨されなくなりました。

* @param {function} passwordCallback (deprecated) It is used to request a 
* password if wrong or no password was provided. The callback receives two 
* parameters: function that needs to be called with new password and reason 
* (see {PasswordResponses}). 

他にもパスワードを入力する方法はありますか?このシナリオの記事または例はどれですか?ここで

+0

Crosspost(https://github.com/mozilla/pdf.js/issues/7806) - そこに返信しました。 – async5

+0

これはほとんど混乱しません。 passwordCallbackまたはonPasswordコールバックを使用してPDFの間違ったパスワードを処理する例がありますか? – Sudheer

答えて

0

はあなたのために、一例である:

function loadDocumentUsingPassword(){ 
    PDFJS.getDocument(file, null, passwordCB, null).then(function (res) { 
     console.log("Document Decrypted"); 
    }); 

function passwordCB (passwordFunc, reason) { 
    if (reason === 1) { // need a password 
    var new_password= confirm('Please enter a password:') 
    } else { // Invalid password 
    var new_password= confirm('Invalid! Please enter a password:') 
    } 
    passwordFunc(new_password); 
}; 

ユーザーがパスワードを入力するように求めています。彼は

+0

これは私の驚くべきサービスになります。私は確認やネイティブのjavascriptものを使用することはできません。私はこの約束を破り、新しいパスワードでこれをもう一度呼び出す必要があります。何か案が? – Sudheer

+0

あなたは壊す必要はありません。角度コードはここで使用できます。 JSFiddleをコードでアップロードしてください。 – Aminadav

+0

ご協力ありがとうございます。ここにplunkerがありますhttps://plnkr.co/edit/LNACGO5OFmasiUH3L896?p=previewコードの詳細を知りたい場合はお知らせください – Sudheer

0

を入力するまでhttps://github.com/mozilla/pdf.js/blob/7f6a607ea537a6237802fe11e211afb2b19af9cf/web/app.js#L649を参照:

var loadingTask = pdfjsLib.getDocument(parameters); 
loadingTask.onPassword = function passwordNeeded(updateCallback, reason) { 
    savedUpdateCallback = updateCallback; 
    // show reason to user 
}; 

https://github.com/mozilla/pdf.js/blob/7f6a607ea537a6237802fe11e211afb2b19af9cf/web/password_prompt.js#L106

// collect newPassword 
savedUpdateCallback(newPassword); 

loadingTaskをキャンセルする必要性を - updateCallbackが呼ばれる保存されるまで待機します。

+0

ありがとうございます。ここでのコメントを見て、それをどのように達成できるか教えてください。 https://github.com/mozilla/pdf.js/issues/7806 – Sudheer

関連する問題