Iphone 如何在iOS 4.2中打印?
我想在我的应用程序中集成打印功能 我要打印的文档将采用.doc或.txt格式。 我在iPhone开发方面还不是很有经验,所以我发现按照苹果的文档很难实现它 如果有人能帮我发布一些示例代码,那将是一个很大的帮助。查看——我链接到了打印部分。这里有示例代码和指向更多示例代码的良好链接 编辑:我现在看到您表示您发现文档很难理解 Word文档很复杂--您需要解析数据,这相当困难 文本和HTML更容易。我以苹果的HTML为例,将其改为纯文本:Iphone 如何在iOS 4.2中打印?,iphone,cocoa-touch,ipad,printing,ios-4.2,Iphone,Cocoa Touch,Ipad,Printing,Ios 4.2,我想在我的应用程序中集成打印功能 我要打印的文档将采用.doc或.txt格式。 我在iPhone开发方面还不是很有经验,所以我发现按照苹果的文档很难实现它 如果有人能帮我发布一些示例代码,那将是一个很大的帮助。查看——我链接到了打印部分。这里有示例代码和指向更多示例代码的良好链接 编辑:我现在看到您表示您发现文档很难理解 Word文档很复杂--您需要解析数据,这相当困难 文本和HTML更容易。我以苹果的HTML为例,将其改为纯文本: - (IBAction)printContent:(id)se
- (IBAction)printContent:(id)sender {
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
pic.delegate = self;
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = self.documentName;
pic.printInfo = printInfo;
UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]
initWithText:yourNSStringWithContextOfTextFileHere];
textFormatter.startPage = 0;
textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
textFormatter.maximumContentWidth = 6 * 72.0;
pic.printFormatter = textFormatter;
[textFormatter release];
pic.showsPageRange = YES;
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"Printing could not complete because of error: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler];
} else {
[pic presentAnimated:YES completionHandler:completionHandler];
}
}
您好,这可能会帮助您尝试它,并张贴如果有任何疑问
-(IBAction)printFromIphone:(id)sender {
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
pic.delegate = self;
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = self.documentName;
pic.printInfo = printInfo;
UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]
initWithText:yourNSStringWithContextOfTextFileHere];
textFormatter.startPage = 0;
textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
textFormatter.maximumContentWidth = 6 * 72.0;
pic.printFormatter = textFormatter;
[textFormatter release];
pic.showsPageRange = YES;
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
NSLog(@"Printing could not complete because of error: %@", error);
}
};
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler];
} else {
[pic presentAnimated:YES completionHandler:completionHandler];
}
}
首先添加UIPrintInteractionControllerDelegate并创建变量
UIPrintInteractionController *printController;
以下用于打印所有图像、文档、excel、powerpoint、pdf文件的代码适用于我:
[self printItem:SomeData withFilePath:YourFilePath];
在上面的代码中,您提供了文档/图像的NSData和URL(文件路径),下面是打印项的进一步代码:withFilePath:方法
-(void)printItem :(NSData*)data withFilePath:(NSString*)filePath{
printController = [UIPrintInteractionController sharedPrintController];
printController.delegate = self;
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = [NSString stringWithFormat:@""];
printInfo.duplex = UIPrintInfoDuplexLongEdge;
printController.printInfo = printInfo;
printController.showsPageRange = YES;
//If NSData contains data of image/PDF
if(printController && [UIPrintInteractionController canPrintData:data]) {
printController.printingItem = data;
}else{
UIWebView* webView = [UIWebView new];
printInfo.jobName = webView.request.URL.absoluteString;
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
printController.printFormatter = webView.viewPrintFormatter;
}
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if (!completed && error) {
//NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code);
}
};
// Check wether device is iPad/iPhone , because UIPrintInteractionControllerDelegate has different methods for both devices
if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
[printController presentFromRect:self.view.frame inView:self.view animated:YES completionHandler:completionHandler];
}
else {
[printController presentAnimated:YES completionHandler:completionHandler];
}
}
我希望这会有帮助。谢谢
//对于Swift,如果您只想打印图像
首先为映像创建IBoutlet
@IBOutlet var qrImage : UIImageView?
然后点击打印按钮,只需添加下面的代码
//In your view controller
@IBAction func printButton(sender: AnyObject) {
let printInfo = UIPrintInfo(dictionary:nil)
printInfo.outputType = UIPrintInfoOutputType.general
printInfo.jobName = "My Print Job"
// Set up print controller
let printController = UIPrintInteractionController.shared
printController.printInfo = printInfo
// Assign a UIImage version of my UIView as a printing iten
printController.printingItem = self.qrImage?.image
// Do it
printController.present(from: self.view.frame, in: self.view, animated: true, completionHandler: nil)
}
我更新了我的答案,加入了打印纯文本的示例代码。谢谢您花费宝贵的时间回答我的问题。@Matthew:请编辑您的答案。行[pic presentFromFromBarButtonItem:sender animated:YES completionHandler:completionHandler];在“presentFromFromBarButtonItem”方法中应该有一个“From”进行更改。马修·弗雷德里克:你对新线有问题吗?我正在尝试打印uitextview的内容,但打印机模拟器会在一行中打印所有内容。如果我将“\n”替换为“\n\n”,则在打印机模拟器上的结果并不总是相同。@Fran抱歉,我自己从未使用过代码,只是从示例中提供了代码。Hiii,我有一个具有QRCode图像的ViewController和一个名为“打印”的按钮,我想在单击“打印”时打印该图像按钮。你能在swift中帮助我吗?我不知道@Maishi SajnaniHi@DilipTiwari请访问下面的链接它将帮助你。这是我现在得到的屏幕截图:-当我点击打印按钮时,它显示打印视图,但我在打印预览中没有得到图像…还有一件事,我首先从url显示图像,然后我想要打印@Maishi sajnanielt我们。Swift版本为我工作了非常感谢@Maishi Sajnani对我们的支持