Phonegap IOS PrintPlugin для Cordova 2.0


Привет iam работает в phonegap IOS (cordova 2.0) мне нужен плагин для печати, и я нашел только один плагин, который не поддерживает 2.0 - link только поддержка до cordova 1.5. кто-нибудь , пожалуйста, помогите мне, есть ли PrintPlugin, который поддерживает cordova 2.0.

Кто-нибудь может помочь ? ?

1 2

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];
}
За этим следует отдельная функция допечатки.
- (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) />> ...
}
Я обновил свою локальную копию и объединил их в одну функцию, а также использовал другой механизм для получения аргументов. Следование-это мое .объявление функции m:
- (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]);
Теперь может оказаться, что я мог бы просто изменить случай в Кордове на Кордову, но это чистая ретроспектива. В любом случае, я надеюсь, что это поможет!