Phonegap IOS PrintPlugin для Cordova 2.0

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

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


person Arjun T Raj    schedule 26.09.2012    source источник
comment
У меня точно такая же проблема. Если у кого-то есть способ сделать это, я был бы очень признателен.   -  person Chris    schedule 28.09.2012


Ответы (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];
}

За этим следует отдельная функция 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);

return Cordova.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]);

Теперь может оказаться, что я мог просто поменять корпус в кордове на кордову, но это чисто задним числом. В любом случае, я надеюсь, что это поможет!

person Mark Brown    schedule 11.10.2012
comment
Ммм... извините, я думал, что ответил на вопрос довольно прямо. - person Mark Brown; 12.10.2012
comment
В частности.... Получите текущий PrintPlugin из репозитория (который работает с Cordova 1.5). Внесите изменения, которые я указал выше. Скомпилируйте в рамках проекта Cordova 2.0. Теперь у вас есть совместимый с Cordova 2.0 PrintPlugin. - person Mark Brown; 12.10.2012
comment
Извини, Тайлер, я неправильно понял. :) - person Mark Brown; 19.10.2012
comment
вышло ли обновление для cordova 3.x? кто-нибудь работает над одним? - person Rocco; 12.10.2013