我正在为我的项目使用pdf.js,而我正面临加密pdf的问题。我正在使用PDF.js passwordCallback函数来提供密码。
PDFJS.getDocument(file, null, passwordCB, null).then(function (res) {
console.log("Document Decrypted);
});
这是passwordCallback函数
var passwordCB = function (passwordFunc, reason) {
if (reason === 1) {
passwordFunc(pdfpassword);
} else {
console.log("Wrong Password");
}
};
如果提供了错误的密码,则控件不会脱离passwordCB功能。在提供有效密码之前,它会被卡住。
因此,当用户输入错误的密码时,我必须告诉他们密码错误并需要获取新密码。我没有使用默认的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 :(得分: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);
};
要求用户输入密码。直到他进入
答案 1 :(得分: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
};
// collect newPassword
savedUpdateCallback(newPassword);
无需取消loadingTask - 它会等到被调用保存的updateCallback
。
答案 2 :(得分:0)
请参考以下网址,提示输入密码,直到输入正确的密码为止。 pdf的密码为“ test”。
http://learnnewhere.unaux.com/pdfViewer/passwordviewer.html
这是提示输入密码的示例代码
import { Dropdown } from 'semantic-ui-react';
type formProps = {
funcionCierre: any
carrera: any;
nombre1: any;
}
const Estudiantes: React.FC<formProps> = (props: formProps) => {
const [area, setArea] = useState<any[]>([]);
const [areaSeleccionada, setAreaSeleccionada] = useState(0);
useEffect(() => {
console.log(props.carrera);
axios.get('http://localhost:8003/skill?carrera_id=' + props.carrera + '&tipo_id=1')
.then(result => {
setArea(result.data);
}
).catch(error => {
console.log(error);
});
}, [area.length]);
const actualizarAreaSelect = (e: any) => {
setAreaSeleccionada(e.target.value)
console.log(areaSeleccionada);
}
return (
<Dropdown
placeholder='Area'
options={area.map(ar => ({
key: ar.skil_id,
value: ar.skill_id,
text: ar.nombre
}))}
onChange={actualizarAreaSelect}
/>
);
}
您可以从此处https://github.com/learnnewhere/simpleChatApp/tree/master/pdfViewer
获取完整的代码