使用UIPrintInteractionController打印图像和文本

时间:2015-08-07 10:01:59

标签: ios iphone xcode xcode6 uiprintinteractioncntrler

我正在使用以下代码打印文本和图像合并。打印工作但图像不打印,而是打印其二进制数据。

 NSURL *url = [NSURL URLWithString:@"[URL here]"];

 if ([UIPrintInteractionController canPrintURL:url]) {

    NSMutableString *msgBody = [[NSMutableString alloc] initWithString:@""];
    [msgBody appendString:[[NSString stringWithFormat:@"%@", @"Printed fromMyApp"] stringByReplacingOccurrencesOfString:@"\n" withString:@" "]];

    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];

    NSString *base64String = [UIImagePNGRepresentation(image)
                              base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    [msgBody appendString:[NSString stringWithFormat:@"%@",base64String]];


    [msgBody appendString:@""];

     UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
      pic.delegate = self;
     UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = @"Printing";
    pic.printInfo = printInfo;

    UIMarkupTextPrintFormatter *textFormatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:msgBody];
  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;

                           void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error)
    {
        if (!completed && error)
        {
            NSLog(@"Printing could not complete because of error: %@", error);
        }
    };

                           [pic presentAnimated:YES completionHandler:completionHandler];
}

Printed result

Printed fromMyApp iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAA ABxpRE9UAAAAAgAAAAAAAABkAAAAKAAAAGQAAABkAACK2Wi+3EAAAEAASURBVHgB 7L2Fex1Htvb7/Q/3nplJDGJmloWWJdmSZZktMzMzJYY4dsxOzMzMzBRDzAySZbEl S4Y4Axmm895f7Tnt6exIjpPJ+U7OHe/naVV3VXV1q7tWLXrX6v8j6f+82949g3dz oPo58I443i0Q7+bAG+bAu4fzhofzblWtflX9d3ou7wjkHYG8mwNvmAPvHs4bHs6/ 00r57n+tnlu+I5B3BPJuDrxhDrx7OG94OO9W1epX1X+n5/KOQN4RyLs58IY58O7h vOHh/DutlO/+1+q55TsCeUcg7+bAG+bAu4fzhofzblWtflX9d3ou/+c///M/9e++ /e1vf9PszzqqR+9oDRiUrYLHd/7tn8m/+5yw/n/DQf6v/MwFf6q/3//+a300Jl6T xgRp0kg/bVnW7ydzqz/l5/aTeUj/jTfi4CBmfItirBdiP7bvO/d9U9vb9jX9zM8a 6w+//70e3bmtc9t36fr+gzq7c5c+mzhJqz6ZoSsnTupXr7583d9+nn3fGstemvY/ /ekPys29opPH1+n08V16eP+mqdbW1d21eHKIFn0cprHD4/S7333tuB9HI3+cx7GO TbvZt0r7fnV1Vru9zaozZXWbva99336eqTc/+/lvOn5Tm32M6q7hfK69v9VmSvOz t9n3rbbqSqvO6v+m45ra7PXWvr00++ZnrmH9rOtZdab8FoE4dzbHzidadW/T136u tW+dZ43z61/+Us8rynVo+3aN79lLHaLrqbdviMZ4BGusR5BGeAWrr1eghvmEaYhf mPpHxCr/zj/FIGsca3yrtK5jRKjf//7X+tVXhbp1ap4+X52tk4sStHdRR926dMzR bd/WYVo0JVofDAlRv97+WrqorwoLcq0hHKXzuObY/JzrrTp7afatn3WedexcWu32 ce37Vn97P3udva993/Sp6Rzn8+3H9vOsentpXcMa295m7dvb7Pum3fm4pnNMP2ur 7jxrHHsf57Gc2+zH1r4prd+3RCyrk9XBKu0nWXX/avm3v/5Vq6ZOVXfPAA3wDlY/ zyAN9wvXMM8QDfMI1EjPQA139Wc/QIM5HuEeoqEQzHDvUI1q2lJ/+cufX9+C/f6s 

如何显示图像而不是二进制数据

任何建议都将受到高度赞赏

1 个答案:

答案 0 :(得分:0)

我认为UIMarkupTextPrintFormatter只生成一个文本输出(顾名思义)