Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS9打印问题,预览秒后更改并移动内容_Ios_Objective C_Printing_Ios9 - Fatal编程技术网

iOS9打印问题,预览秒后更改并移动内容

iOS9打印问题,预览秒后更改并移动内容,ios,objective-c,printing,ios9,Ios,Objective C,Printing,Ios9,我们有一个用Xcode 6和iOS8制作的应用程序,我们在不改变iOS9任何内容的情况下重建了它,现在当我们尝试打印文档时,预览会出现,几秒钟后它会改变页面格式。在下面的例子中,所有的句子都“跳”到左边。这也会影响打印页面 这可能是iOS 9的一个普遍问题,因为它甚至在使用Safari打印网页时发生 对于我们来说,如果文本移动是一个问题,因为我们需要打印到一个固定的位置,因此更改1厘米是不好的 我们发现,跳转发生在打印机发送可用纸张大小后(第一次调用Choosepper方法是使用空数组,第二次

我们有一个用Xcode 6和iOS8制作的应用程序,我们在不改变iOS9任何内容的情况下重建了它,现在当我们尝试打印文档时,预览会出现,几秒钟后它会改变页面格式。在下面的例子中,所有的句子都“跳”到左边。这也会影响打印页面

  • 这可能是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,您将被剪裁。我们没有在这方面付出更多努力,但我认为他们误解了这个问题。对我来说奇怪的是,有页边空白似乎可以扩展内容,这没有多大意义。。。