iOS9打印问题,预览秒后更改并移动内容
我们有一个用Xcode 6和iOS8制作的应用程序,我们在不改变iOS9任何内容的情况下重建了它,现在当我们尝试打印文档时,预览会出现,几秒钟后它会改变页面格式。在下面的例子中,所有的句子都“跳”到左边。这也会影响打印页面iOS9打印问题,预览秒后更改并移动内容,ios,objective-c,printing,ios9,Ios,Objective C,Printing,Ios9,我们有一个用Xcode 6和iOS8制作的应用程序,我们在不改变iOS9任何内容的情况下重建了它,现在当我们尝试打印文档时,预览会出现,几秒钟后它会改变页面格式。在下面的例子中,所有的句子都“跳”到左边。这也会影响打印页面 这可能是iOS 9的一个普遍问题,因为它甚至在使用Safari打印网页时发生 对于我们来说,如果文本移动是一个问题,因为我们需要打印到一个固定的位置,因此更改1厘米是不好的 我们发现,跳转发生在打印机发送可用纸张大小后(第一次调用Choosepper方法是使用空数组,第二次
- 这可能是iOS 9的一个普遍问题,因为它甚至在使用Safari打印网页时发生
- 对于我们来说,如果文本移动是一个问题,因为我们需要打印到一个固定的位置,因此更改1厘米是不好的
- 我们发现,跳转发生在打印机发送可用纸张大小后(第一次调用Choosepper方法是使用空数组,第二次调用实际纸张大小)
- (IBAction)print:(id)sender
{
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
if(!controller){
NSLog(@"Couldn't get shared UIPrintInteractionController!");
return;
}
UIPrintInteractionCompletionHandler completionHandler =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if(!completed && error){
NSLog(@"FAILED! due to error in domain %@ with error code %ld", error.domain, (long)error.code);
}
else
{
NSLog(@"complete");
}
};
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
pic.delegate = self;
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = @"My Job";
printInfo.duplex = UIPrintInfoDuplexLongEdge;
pic.printInfo = printInfo;
pic.showsPageRange = YES;
UIMarkupTextPrintFormatter *textPrint = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:[NSString stringWithFormat:@"<!DOCTYPE html><html><body><p><h1>Hello World</h1></p><p><h2>Hello World</h2></p><p><h3>Hello World</h3></p><p><h4>Hello World</h4></p><p><h5>Hello World</h5></p><p><h6>Hello World</h6></p></body></html>"]];
pic.printFormatter = textPrint;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[controller presentFromBarButtonItem:self.printButton animated:YES completionHandler:completionHandler];
}
else {
[controller presentAnimated:YES completionHandler:completionHandler];
}
}
-(iAction)打印:(id)发件人
{
UIPrintInteractionController*控制器=[UIPrintInteractionController sharedPrintController];
如果(!控制器){
NSLog(@“无法获取共享UIPrintInteractionController!”);
返回;
}
UIPrintInteractionCompletionHandler completionHandler=
^(UIPrintInteractionController*printController,布尔完成,N错误*错误){
如果(!已完成&错误){
NSLog(@“失败!由于域%@中出现错误,错误代码为%ld”,error.domain,(long)error.code);
}
其他的
{
NSLog(@“完整”);
}
};
UIPrintInteractionController*pic=[UIPrintInteractionController sharedPrintController];
pic.delegate=self;
UIPrintInfo*printInfo=[UIPrintInfo printInfo];
printInfo.outputType=UIPrintInfoOutputGeneral;
printInfo.jobName=@“我的工作”;
printInfo.duplex=UIPrintInfoDuplexLongEdge;
pic.printInfo=printInfo;
pic.showsPageRange=是;
UIMarkupTextPrintFormatter*textPrint=[[UIMarkupTextPrintFormatter alloc]initWithMarkupText:[NSString stringWithFormat:@“你好世界你好世界你好世界你好世界你好世界”];
pic.printFormatter=textPrint;
if(UI\u USER\u INTERFACE\u IDIOM()==UIUserInterfaceIdiomPad){
[controller presentFromBarButtonItem:self.printButton动画:是completionHandler:completionHandler];
}
否则{
[controller presentAnimated:YES completionHandler:completionHandler];
}
}
以下是两个预览,第二个已从所需位置移动:
您在这方面运气好吗?我有一个标签打印机类似的问题。如果我的用户在页面加载之前打印,我会得到一个8.5x11英寸的页面,并将其缩放为2x3.5英寸的标签。如果我等待打印机发送其页面大小,它就会正常工作。我们向苹果公司提交了一个bug,这是他们的回应:如果你想让某个东西在一个准确的位置,你的代码需要边距管理。这里发生的事情是,您被要求使用通用边距绘制预览。然后在我们从打印机获得准确的页边距后,使用打印机特定的页边距重新绘制。请参阅2014年WWDC视频,或苹果提供的示例代码,了解如何以基本形式控制页边距。此外,您可能需要考虑适当的页面渲染。在那里,您可以执行检查,以确保打印机物理限制的大小正确,以便使用所需的页边距进行打印。例如,许多打印机的下限为0.56。如果您将底部插入设置为0.50,您将被剪裁。我们没有在这方面付出更多努力,但我认为他们误解了这个问题。对我来说奇怪的是,有页边空白似乎可以扩展内容,这没有多大意义……你在这方面运气好吗?我有一个标签打印机类似的问题。如果我的用户在页面加载之前打印,我会得到一个8.5x11英寸的页面,并将其缩放为2x3.5英寸的标签。如果我等待打印机发送其页面大小,它就会正常工作。我们向苹果公司提交了一个bug,这是他们的回应:如果你想让某个东西在一个准确的位置,你的代码需要边距管理。这里发生的事情是,您被要求使用通用边距绘制预览。然后在我们从打印机获得准确的页边距后,使用打印机特定的页边距重新绘制。请参阅2014年WWDC视频,或苹果提供的示例代码,了解如何以基本形式控制页边距。此外,您可能需要考虑适当的页面渲染。在那里,您可以执行检查,以确保打印机物理限制的大小正确,以便使用所需的页边距进行打印。例如,许多打印机的下限为0.56。如果您将底部插入设置为0.50,您将被剪裁。我们没有在这方面付出更多努力,但我认为他们误解了这个问题。对我来说奇怪的是,有页边空白似乎可以扩展内容,这没有多大意义。。。