gpt4 book ai didi

ios - 用于 Cordova 2.0 的 Phonegap IOS PrintPlugin

转载 作者:行者123 更新时间:2023-12-01 16:54:46 25 4
gpt4 key购买 nike

嗨,我在 phonegap IOS (cordova 2.0) 工作,我需要一个打印插件,我发现只有一个插件不支持 2.0 - link
仅支持cordova 1.5。任何人请帮助我,是否有任何支持cordova 2.0的PrintPlugin。

任何人都可以帮忙吗? ?

最佳答案

在撰写本文时,来自 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);

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]);

现在,事实证明我本可以简单地将 Cordova 的案例更改为cordova,但这纯粹是事后诸葛亮。无论哪种方式,我希望这会有所帮助!

关于ios - 用于 Cordova 2.0 的 Phonegap IOS PrintPlugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12594495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com