如何在iOS 4.2中打印?

问题描述:

我想在我的应用程序中集成打印功能。

I want to integrate the print functionality in my app.

我要打印的文档将采用.doc或.txt格式。
我在iPhone开发方面还不是很有经验,因此很难通过Apple文档来实现它。

The document I want to print will be in .doc or .txt format. I am not very experienced in iPhone development yet, so finding it difficult to implement it by following the Apple documentation.

如果有人可以通过发布一些来帮助我示例代码,将是一个很大的帮助。

If someone could help me by posting some sample code, will be a great help.

查看 适用于iOS的绘图和打印指南 - 我链接到打印部分。这里有示例代码和更多示例代码的良好链接。

Check out the Drawing and Printing Guide for iOS -- I linked to the printing section. There's sample code and good links to more sample code there.

编辑:我现在看到您发现您发现难以理解的文档。

Edit: I see now that you indicate you find the documentation difficult to follow.

Word文档很复杂 - 您需要解析数据,这非常困难。

Word documents are complicated -- you'll need to parse through the data, which is quite difficult.

文本和HTML更容易。我拿了Apple的HTML示例并将其更改为纯文本:

Text and HTML are easier. I took Apple's example for HTML and changed it for plain text:

- (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];
    }
}