博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS UIPrintInteractionController打印
阅读量:5150 次
发布时间:2019-06-13

本文共 3612 字,大约阅读时间需要 12 分钟。

- (void)printData{    //为打印做准备,创建一个指向sharedPrintController的引用    UIPrintInteractionController *printer = [UIPrintInteractionController sharedPrintController];    printer.delegate = self;    //配置打印信息    UIPrintInfo *Pinfo = [UIPrintInfo printInfo];    Pinfo.outputType = UIPrintInfoOutputGeneral;//可打印文本、图形、图像    Pinfo.jobName = @"Print for xiaodui";//可选属性,用于在打印中心中标识打印作业    Pinfo.duplex = UIPrintInfoDuplexLongEdge;//双面打印绕长边翻页,NONE为禁止双面    Pinfo.orientation = UIPrintInfoOrientationPortrait;//打印纵向还是横向    //    Pinfo.printerID = @"";//指定默认打印机,也可以使用UIPrintInteractionControllerDelegate来知悉    printer.printInfo = Pinfo;    //设置页面范围 打印文字//    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:@"哈护手霜按时哈哈"];//    textFormatter.startPage = 0;//指定从哪一张开始打印0代表第一张//    textFormatter.contentInsets = UIEdgeInsetsMake(36, 36, 36, 36);//72相当于1英寸,这样设置上下左右的边距都为0.5英寸//    textFormatter.maximumContentWidth = 504;//(72x7.5)相当于打印宽度为7英寸//    printer.printFormatter = textFormatter;

/*

  • AirPrint可以直接打印一些内容。 这些内容是 NSData, NSURL, UIImage, and ALAsset 类的实例, 但是这些实例的内容, 或者引用的类型(NSURL)必须是 image 或者pdf.
  • 对于 image来说, NSData, NSURL, UIImage, and ALAsset 类型都可以的。 对于PDF, 只能使用 NSData, NSURL。 然后需要将这些数据实例直接赋值 给 UIPrintInteractionController实例的 printingItem 或者 printingItems 属性。

*/

// printer.printingItem = [UIImage imageNamed:@"LaunchImage"];     printer.printingItems = @[[UIImage imageNamed:@"welcome_page2"], [UIImage imageNamed:@"LaunchImage"], [UIImage imageNamed:@"welcome_page1"],];    printer.showsPageRange = NO;    [printer presentAnimated:YES completionHandler:^(UIPrintInteractionController * _Nonnull printInteractionController, BOOL completed, NSError * _Nullable error) {        if (!completed && error) {            NSLog(@"Error");        }    }];}

 

打印webView视图

初始化webView

- (UIWebView *)printWebView{    if (!_printWebView) {        _printWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, Main_Screen_Width, Main_Screen_Height)];        _printWebView.backgroundColor = HexRGB(0xf9f9f9);        _printWebView.delegate = self;        _printWebView.scalesPageToFit = YES;    } return _printWebView;}

 

 加载视图

NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];    NSURLRequest *request = [NSURLRequest requestWithURL:url];    [self.printWebView loadRequest:request];

 

在加载完成中调用打印方法

- (void)webViewDidFinishLoad:(UIWebView *)webView{    [self printWebViewPage];}- (void)printWebViewPage{    UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {        if(error){            NSLog(@"FAILED! due to error in domain %@ with error code %ld-- %@",                  error.domain, (long)error.code, completionHandler);        }    };    UIPrintInfo *printInfo = [UIPrintInfo printInfo];    printInfo.outputType = UIPrintInfoOutputGeneral;    printInfo.jobName = @"Print for xiaodui";;    printInfo.duplex = UIPrintInfoDuplexLongEdge;    controller.printInfo = printInfo;    controller.showsPageRange = YES;       UIViewPrintFormatter *viewFormatter = [self.printWebView viewPrintFormatter];    viewFormatter.startPage = 0;    controller.printFormatter = viewFormatter;        [controller presentAnimated:YES completionHandler:^(UIPrintInteractionController * _Nonnull printInteractionController, BOOL completed, NSError * _Nullable error) {
if (!completed && error) { NSLog(@"Error"); } }];}

 

 

如图:

 

转载于:https://www.cnblogs.com/Milo-CTO/p/6856815.html

你可能感兴趣的文章
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
三次数模总结一下
查看>>
Py之np.concatenate函数【转载】
查看>>
【NOIP模拟】matrix(简化矩阵)
查看>>
e.preventDefault()和e.stopPropagation()以及return false的作用和区别
查看>>
洛谷 1571 眼红的Medusa
查看>>
[HEOI2016/TJOI2016]树
查看>>
(转载)PHP中设置时区方法小结
查看>>
spring--百度百科
查看>>
关于Invoke和InvokeRequired
查看>>
Program exited with code **** 相关解释
查看>>
装服务器,测试数据库,简单的maven命令
查看>>
升级Firefox8后watir-webdriver出现错误“unable to obtain stable firefox connection in 60 seconds”...
查看>>
第6章 Overlapped I/O, 在你身后变戏法 ---被激发的 Event 对象 -4
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
001.RAID简介
查看>>
投标项目的脚本练习2
查看>>
第五次实验
查看>>