喜IAM工作我需要一個打印插件,我發現只有一個不支持2.0 - link 最多隻支持科爾多瓦1.5插件。任何人都請幫助我,是否有任何支持cordova 2.0的PrintPlugin。的PhoneGap IOS PrintPlugin在PhoneGap的IOS(科爾多瓦2.0)2.0科爾多瓦
任何人都可以幫忙嗎? ?
喜IAM工作我需要一個打印插件,我發現只有一個不支持2.0 - link 最多隻支持科爾多瓦1.5插件。任何人都請幫助我,是否有任何支持cordova 2.0的PrintPlugin。的PhoneGap IOS PrintPlugin在PhoneGap的IOS(科爾多瓦2.0)2.0科爾多瓦
任何人都可以幫忙嗎? ?
在撰寫本文時,GitHub存儲庫中的PrintPlugin針對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);
返回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]);
,其結果可能是,我可以簡單地在科爾多瓦改變的情況下,以科爾多瓦,但是這是純粹的事後諸葛亮。無論哪種方式,我希望這有助於!
嗯......對不起,我以爲我直接回答了這個問題。 –
具體來說....從存儲庫(與Cordova 1.5一起使用)獲取當前的PrintPlugin。進行上面指定的更改。在Cordova 2.0項目下編譯。您現在擁有兼容Cordova 2.0的PrintPlugin。 –
抱歉,泰勒,我誤解了。 :) –
我有完全相同的問題。如果有人有辦法做到這一點,我會非常感激。 – Chris