Печать HTML в iOS - PullRequest
       25

Печать HTML в iOS

1 голос
/ 06 мая 2011

Я сейчас использую следующий код для печати.Обратите внимание, что у меня есть требование HTML-печати. ​​

UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = @"Sample";
pic.printInfo = printInfo;

NSString *htmlString = [self prepareHTMLEmailMessage];
UIMarkupTextPrintFormatter *htmlFormatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:htmlString];
htmlFormatter.startPage = 0;
htmlFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1-inch margins on all sides
htmlFormatter.maximumContentWidth = 6 * 72.0;   // printed content should be 6-inches wide within those margins
pic.printFormatter = htmlFormatter;
[htmlFormatter 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:self.myPrintBarButton animated:YES completionHandler:completionHandler];

} else {
    [pic presentAnimated:YES completionHandler:completionHandler];
}

Полученный результат не дает мне одинаковых полей на всех страницах.Часть проблемы - свойство contentInsets.Согласно документации Apple: верхняя вставка относится только к первой странице печатного содержимого.Sample Output generated by the code above

Я хочу, чтобы выходные данные имели согласованные поля, точно так же, как выходные данные, создаваемые Safari. Print output produced by Safari

Предложения?

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Звучит так, как будто вы уже получили свой рабочий ответ, но подкласс UIPrintPageRenderer не является строго необходимым, если все, что вы делаете, это добавляете пустой верхний и нижний колонтитулы для заполнения каждой печатной страницы - простосоздайте экземпляр ванили UIPrintPageRenderer и задайте свойства headerHeight и footerHeight, затем добавьте UIMarkupTextPrintFormatter в средство визуализации.

Я разместил свой метод на другом вопросе: Размер бумаги для печати исодержимое вставки

0 голосов
/ 06 мая 2011

Использование UIPrintPageRenderer подкласса с UIMarkupTextPrintFormatter решило мою проблему. Пример кода Apple помог.

...