Phonegap IOS PrintPlugin для Cordova 2.0
Привет iam работает в phonegap IOS (cordova 2.0) мне нужен плагин для печати, и я нашел только один плагин, который не поддерживает 2.0 - link только поддержка до cordova 1.5. кто-нибудь , пожалуйста, помогите мне, есть ли PrintPlugin, который поддерживает cordova 2.0.
Кто-нибудь может помочь ? ?
1 ответ:
На момент написания этой статьи PrintPlugin из репозитория GitHub нацелен на Cordova 1.5. Если вы получите эту версию и внесете следующие изменения, вы можете скомпилировать ее в рамках проекта Cordova 2.0.
Обратите внимание: я видел ошибку во всем этом плагине, которая является проблемой с печатью более одной страницы. Я обнаружил, что это связано с отсутствием логики, чтобы дождаться завершения загрузки webView перед печатью. В настоящее время я работаю над новой версией этого плагина, чтобы обеспечить пользовательские заголовки, нумерация страниц и т.д. Но пока....... ;)
В текущем репозитории .M файл, он имеет следующее объявление функции:
За этим следует отдельная функция допечатки.- (void) print:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options{ NSUInteger argc = [arguments count]; if (argc < 1) { return; } self.printHTML = [arguments objectAtIndex:0]; ... << snipped />> ... [self doPrint]; }
Я обновил свою локальную копию и объединил их в одну функцию, а также использовал другой механизм для получения аргументов. Следование-это мое .объявление функции m:- (void) doPrint{ if (![self isPrintServiceAvailable]){ [self callbackWithFuntion:self.failCallback withData: @"{success: false, available: false}"]; return; } UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController]; if (!controller){ return; } ... << snipped (cut and paste to below) />> ... }
- (void) print:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options { // NSUInteger argc = [arguments count]; NSString* printHTML = [options valueForKey:@"printHTML"]; NSString* successCallback = [options valueForKey:@"success"]; NSString* failCallback = [options valueForKey:@"fail"]; NSString* dialogLeftPos = [options valueForKey:@"dialogLeftPos"]; NSString* dialogTopPos = [options valueForKey:@"dialogTopPos"]; UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController]; if (!controller){ return; } ... << snipped (paste the rest from your original block here />> ... }
Затем я также изменил .JS для создания объекта вместо простого список параметров.
Текущий репозиторий PrintPlugin.js имеет:
return Cordova.exec("PrintPlugin.print", printHTML, callbackPrefix + '.success', callbackPrefix + '.fail', dialogLeftPos, dialogTopPos);
Возвращение Кордовы.exec ("PrintPlugin.print", printHTML, callbackPrefix + '.success', callbackPrefix + '.fail', dialogLeftPos, dialogTopPos);
Я изменил это на следующее:
Теперь может оказаться, что я мог бы просто изменить случай в Кордове на Кордову, но это чистая ретроспектива. В любом случае, я надеюсь, что это поможет!var args = { 'printHTML': printHTML, 'success': callbackPrefix + '.success', 'fail': callbackPrefix + '.fail', 'dialogLeftPos': dialogLeftPos, 'dialogTopPos': dialogTopPos }; cordova.exec(null, null, "PrintPlugin", "print", [args]);