Печать UIImage с использованием AirPrint приводит к обрезанию содержимого

Я распечатываю UIImage используя AirPrint, но поля не верны. Вот как это выглядит при печати:
Фото распечатки

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

Вот код в соответствии с просьбой:

    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 ответ

Решение

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

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

#import "ANImageBitmapRep.h"

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

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

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

Другие вопросы по тегам