Невозможно заставить Pdf417Scanner работать как плагин с Cordova/PhoneGap
Я пытаюсь заставить плагин Pdf417Scanner ( https://github.com/PDF417/pdf417-phonegap) работать с Cordova/PhoneGap.
Вот что я сделал до сих пор.
- Создан новый проект с использованием PhoneGap (с Framework7 для пользовательского интерфейса)
- Добавлен плагин, используя команду
phonegap plugin add pdf417-phonegap
- Добавлена платформа Android с помощью команды
phonegap platform add android
Фрагмент кода JavaScript, который вызывает Pdf417Scanner для сканирования. Большая часть этого кода прямо из документации проекта Github.
$$(document).on('deviceready', function() {
console.log("Device is ready!");
$$('#scan').on('click', function () {
console.log("Inside the scan click");
var types = ["PDF417", "QR Code"];
/**
* Initiate scan with options
* NOTE: Some features are unavailable without a license
* Obtain your key at http://pdf417.mobi
*/
var options = {
beep : true, // Beep on
noDialog : true, // Skip confirm dialog after scan
uncertain : false, //Recommended
quietZone : false, //Recommended
highRes : false, //Recommended
inverseScanning: false,
frontFace : false
};
var licenseiOs = "sRwAAAEQbW9iaS5wZGY0MTcuZGVtbz/roBZ34ygXMQRMupTjSPXnoj0Mz1jPfk1iRX7f78Ux6a+pfXVyW0HCjPTxl5ocxgXWF66PTrtFUbJFCDUpyznreSWY4akvhvqVFfcTYgVEKjB+UqO6vPD5iIaUCaEYhF4dVmM=";
// This license is only valid for package name "mobi.pdf417.demo"
var licenseAndroid = "sRwAAAAQbW9iaS5wZGY0MTcuZGVtb2uCzTSwE5Pixw1pJL5UEN7nyXbOdXB61Ysy/sgAYt4SaB0T/g6JvisLn6HtB8LzLDmpFjULMxmB8iLsy3tFdHtMhLWOM6pr0tQmSLGyhrXfe6rVoHAxJtPrFEoCNTk4RjLltQ==";
cordova.plugins.pdf417Scanner.scan(
// Register the callback handler
function callback(scanningResult) {
// handle cancelled scanning
if (scanningResult.cancelled == true) {
myApp.alert("Cancelled!");
return;
}
// Obtain list of recognizer results
var resultList = scanningResult.resultList;
var resToShow = "";
// Iterate through all results
for (var i = 0; i < resultList.length; i++) {
// Get individual resilt
var recognizerResult = resultList[i];
resToShow += "(Result type: " + recognizerResult.resultType + ") <br>"
if (recognizerResult.resultType == "Barcode result") {
// handle Barcode scanning result
var raw = "";
if (typeof(recognizerResult.raw) != "undefined" && recognizerResult.raw != null) {
raw = " (raw: " + hex2a(recognizerResult.raw) + ")";
}
resToShow += "(Barcode type: " + recognizerResult.type + ")<br>"
+ "Data: " + recognizerResult.data + "<br>"
+ raw;
} else if (recognizerResult.resultType == "USDL result") {
// handle USDL parsing result
var fields = recognizerResult.fields;
resToShow += /** Personal information */
"USDL version: " + fields[kPPStandardVersionNumber] + "; " +
"Family name: " + fields[kPPCustomerFamilyName] + "; " +
"First name: " + fields[kPPCustomerFirstName] + "; " +
"Date of birth: " + fields[kPPDateOfBirth] + "; " +
"Sex: " + fields[kPPSex] + "; " +
"Eye color: " + fields[kPPEyeColor] + "; " +
"Height: " + fields[kPPHeight] + "; " +
"Street: " + fields[kPPAddressStreet] + "; " +
"City: " + fields[kPPAddressCity] + "; " +
"Jurisdiction: " + fields[kPPAddressJurisdictionCode] + "; " +
"Postal code: " + fields[kPPAddressPostalCode] + "; " +
/** License information */
"Issue date: " + fields[kPPDocumentIssueDate] + "; " +
"Expiration date: " + fields[kPPDocumentExpirationDate] + "; " +
"Issuer ID: " + fields[kPPIssuerIdentificationNumber] + "; " +
"Jurisdiction version: " + fields[kPPJurisdictionVersionNumber] + "; " +
"Vehicle class: " + fields[kPPJurisdictionVehicleClass] + "; " +
"Restrictions: " + fields[kPPJurisdictionRestrictionCodes] + "; " +
"Endorsments: " + fields[kPPJurisdictionEndorsementCodes] + "; " +
"Customer ID: " + fields[kPPCustomerIdNumber] + "; ";
}
resToShow += "<br><br>";
}
myApp.alert(resToShow);
},
// Register the error callback
function errorHandler(err) {
myApp.alert('Error: ' + err);
},
types, options, licenseiOs, licenseAndroid
);
});
});
Это добраться до console.log("Inside the scan click");
часть; но не уверен, что произойдет после того, как он попадет cordova.plugins.pdf417Scanner.scan
- это просто не работает. Просто чтобы уточнить, я тестирую это прямо на моем телефоне Android (с помощью Android 7).
Есть идеи? Кто-нибудь использовал эту библиотеку / плагин?
1 ответ
Проблема в том, что кто-то зарегистрирован pdf417-phonegap
на NPM до PDF417 команда делала, поэтому при установке плагина вот так phonegap plugin add pdf417-phonegap
, вы не получите https://github.com/PDF417/pdf417-phonegap
, но https://github.com/alejonext/pdf417-phonegap
, который является другим плагином, и он устарел.
Для установки плагина сделайте это:
git clone https://github.com/PDF417/pdf417-phonegap
phonegap plugin add pdf417-phonegap/Pdf417/
изнутри вашего текущего проекта, или вы можете сделать это снаружи и изменить pdf417-phonegap/Pdf417/
к пути вашего клона, но убедитесь, что вы сохранили /Pdf417/ часть, так как они имеют плагин внутри этой папки, а не в корне.
Я проверил это, и сканер работает, я просто получаю сообщение об ошибке hex2a
так как у меня не было этой функции.
Но вы можете выбрать его из их кода https://github.com/PDF417/pdf417-phonegap/blob/master/www/js/index.js#L21-L27:
function hex2a(hex) {
var str = '';
for (var i = 0; i < hex.length; i += 2) {
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
}
return str;
}