gpt4 book ai didi

objective-c - 空气打印 : Set default printer in UIPrintInteractionController

转载 作者:可可西里 更新时间:2023-11-01 04:31:13 24 4
gpt4 key购买 nike

我需要一种方法,使用已知的 printerId 强制将选定的打印机呈现给 UIPrintInteractionController。

注意:为了进行测试,我使用安装在共享“打印机”的“MacBook Pro”上的 Printopia

我做了这个测试:

-(IBAction)print:(id)sender
{
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];

UIPrintInteractionCompletionHandler completionHandler = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
NSLog(@"Selected Printer ID: %@",printController.printInfo.printerID);
};

NSString* path = [[NSBundle mainBundle] pathForResource:@"TestImage" ofType:@"png"];
NSURL* imageURL = [NSURL fileURLWithPath:path isDirectory:NO];

UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputPhoto;
printInfo.jobName = @"Image print";
controller.printInfo = printInfo;

controller.printingItem = imageURL;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
[controller presentFromBarButtonItem:self.printButton animated:YES completionHandler:completionHandler]; // iPad
}
else
{
[controller presentAnimated:YES completionHandler:completionHandler]; // iPhone
}
}

打印完成后,应用会记录以下打印机 ID:

\032Printer\032@\032MacBook\032Pro._ipp._tcp.local.

我想覆盖打印机,所以我应该这样做:

UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.printerId = @"\032Printer\032@\032MacBook\032Pro._ipp._tcp.local.";
controller.printInfo = printInfo;

但由于某些原因它不起作用,UIPrintInteractionController 没有按预期选择打印机,但打印机显示在打印机列表中。

我猜问题是打印机 ID 中出现了奇怪的字符。

谁知道 printInfo.printerId 是如何编码的以及如何手动设置它?

如果我将 NSString* printerId 存储到一个 ivar 中并在下一次打印操作时再次设置它,它就可以工作,但我无法手动通过打印机 ID 强制使用默认打印机。


顺便说一句:显然,如果打印机不可用/不可访问,我知道无法选择...

最佳答案

为了以编程方式设置默认打印机,您只需将 printInfo 的 printerID 设置为 ._ipp._tcp.local。 printerName 应该与它在 UIPrinterInteractionController 弹出窗口的打印机列表中的显示方式完全相同。例如,对于显示为 LANIERCOLOR315 [00:80:A3:95:2D:41] 的打印机,打印机 ID 为 LANIERCOLOR315 [00:80:A3:95:2D: 41]._ipp._tcp.local.您不必对特殊字符进行编码。该框架将执行此操作。

关于objective-c - 空气打印 : Set default printer in UIPrintInteractionController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12898476/

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