Печать UIImage с использованием AirPrint приводит к обрезанию содержимого - PullRequest
6 голосов
/ 04 октября 2011

Я печатаю UIImage с помощью AirPrint, но поля не верны. Вот как это выглядит при печати:
Photo of printout

Есть ли способ, которым я могу идеально разместить его на бумаге?

Вот запрашиваемый код:

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    //pic.delegate = del;

    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = [NSString stringWithFormat:@"New Ticket"];
    pic.printInfo = printInfo;


    pic.printingItem = [UIImage imageWithContentsOfFile:path];

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
        if (!completed && error) {
            UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error." 
                                                   message:[NSString stringWithFormat:@"An error occured while printing: %@", error]
                                                  delegate:nil 
                                         cancelButtonTitle:@"OK" 
                                         otherButtonTitles:nil, nil];

            [av show];
            [av release];
        }
    };

    [pic presentAnimated:YES completionHandler:completionHandler];

1 Ответ

0 голосов
/ 15 октября 2011

Лучше всего, вероятно, уменьшить масштаб изображения до соотношения напечатанного изображения, чтобы вы могли видеть все это на странице.

Есть несколько способов сделать это, поэтому я просто скажу вам, как я это сделаю. Я поддерживаю класс с именем ANImageBitmapRep , который имеет несколько различных типов масштабирования изображения. Требуемый тип масштабирования сохраняет все изображение, но центрирует его внутри прямоугольника определенного размера. Сначала вы должны добавить исходные файлы ANImageBitmapRep в свой проект и #import ANImageBitmapRep.h :

#import "ANImageBitmapRep.h"

Затем масштабируйте изображение следующим образом:

pic.printingItem = [[UIImage imageWithContentsOfFile:path] imageFittingFrame:CGSizeMake(478, 640)];

Вы можете изменить CGSizeMake(x, y) на любое другое, чтобы настроить масштаб и разрешение масштабированного изображения.

...