我有一个需要打印iPad收据和通行证的应用程序。我已经实现了AirPrint SDK,它工作正常,即我能够使用兼容AirPrint的打印机从iPad打印文档。
问题是我需要这些收据和通行证在半页(A4页面的一半)或A5页面上。无论我对打印作业做了哪些更改,它始终以完整的A4页面和横向打印。
这是我打印的代码:
UIPrintInteractionController *printer = [UIPrintInteractionController sharedPrintController];
UIPrintInfo *printObject = [UIPrintInfo printInfo];
[printObject setJobName:@"Receipt"];
[printObject setOutputType:UIPrintInfoOutputGeneral];
[printObject setOrientation:UIPrintInfoOrientationLandscape];
UIPrintFormatter *printFormatter = [[UIPrintFormatter alloc] init];
[printFormatter setContentInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[printer setPrintFormatter:printFormatter];
[printer setPrintInfo:printObject];
[printer setDelegate:self];
[printer setPrintingItem:targetURL];
[printer presentFromRect:sender inView:view animated:YES completionHandler:^(UIPrintInteractionController *printInteractionController,BOOL completed, NSError *error){}];
我也试过实现choosePaper
委托方法,但它也没有帮助。哦,在创建文档时,我指定了大小:
CGSize pageSize = CGSizeMake(595, 420);
NSString* fileName = @"GatePass.PDF";
NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [arrayPaths objectAtIndex:0];
NSString* pdfFileName = [path stringByAppendingPathComponent:fileName];
UIGraphicsBeginPDFContextToFile(pdfFileName, CGRectZero, nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);
理想情况下,如果用户在打印件中使用A5纸张,则可以正常打印。如果用户使用A4纸,则只打印一半页面,依此类推。
知道如何实现这一目标吗?
答案 0 :(得分:1)
使用selectedPaper委托方法。如果列表中列出了A5,则选择该纸张。如果打印机有A5并且知道它有A5那么你应该得到A5输出。您还希望以selectedPaper返回的大小创建PDF。
您可以使用打印机模拟器进行测试。使用“装入纸张尺寸”按钮使用“#34;模拟纸张传感器”设置其中一台打印机"并在其中一个托盘装载A5。