首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从UIPrintFormatter获取准确的pageCount

如何从UIPrintFormatter获取准确的pageCount
EN

Stack Overflow用户
提问于 2012-02-09 04:44:39
回答 1查看 1.5K关注 0票数 2

我正在使用UIMarkupTextPrintFormatter从我的应用程序打印一些超文本标记语言。如果让打印格式化程序打印到整个页面,效果会很好。

但我希望将格式化程序限制为在页面的一半上打印-为此,我在知道纸张大小后设置了contentInsets属性(我在调用UIPrintInteractinControllerDelegate方法- (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList时设置了contentInsets )。

这也是有效的-打印被正确地限制在用contentInsets定义的页面区域。

但打印页数是错误的。我得到的页数就好像打印作业一直在使用默认的contentInsets (0,0,0,0)。

如何让它打印正确的页数?为什么UIMarkupTextPrintFormatter上的pageCount属性总是返回0?

以下是打印作业设置代码:

代码语言:javascript
复制
UIPrintInteractionController* pic = [UIPrintInteractionController sharedPrintController];
pic.delegate = self;

UIPrintInfo* pi = [UIPrintInfo printInfo];
pi.orientation = UIPrintInfoOrientationLandscape;
pi.outputType = UIPrintInfoOutputGrayscale;
pi.duplex = UIPrintInfoDuplexNone;
pic.printInfo = pi;

UIMarkupTextPrintFormatter* mtpf = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText: myHTML ];
pic.printFormatter = mtpf;

[pic presentAnimated: YES completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error) 
{
}];

以及委托方法:

代码语言:javascript
复制
- (UIPrintPaper *)printInteractionController: (UIPrintInteractionController *)pic choosePaper:(NSArray *)paperList
{
    // we want letter paper
    UIPrintPaper* printPaper = [UIPrintPaper bestPaperForPageSize: CGSizeMake( 612 , 792) withPapersFromArray: paperList];

    UIMarkupTextPrintFormatter* mtpf = (UIMarkupTextPrintFormatter*)pic.printFormatter;

    CGFloat padding = ( printPaper.paperSize.height - printPaper.printableRect.size.height ) / 2.0;

    mtpf.contentInsets = UIEdgeInsetsMake( 0, 0, 0, (printPaper.printableRect.size.height / 2.0) + padding );

    // always 0 ???
    NSLog( @"pageCount: %d", mtpf.pageCount );

    return printPaper;
}
EN

回答 1

Stack Overflow用户

发布于 2016-03-05 00:42:07

您需要编写UIPrintPageRenderer的子类。在子类numberOfPages方法中的printFormatter上设置了各种度量之后,您就可以获得正确的页面计数。See my long answer with example code located here。它不完全是这个问题,但它回答了许多相关的问题,试图解决打印问题的人需要得到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9201106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档