所以我也有这个问题。我正在使用 UIWebView 访问在窗口中打开 PDF 文档的网站链接。打印 PDF 时,文档在底部被裁剪并发送到下一页。这很烦人,因为现在一个两页的 PDF 文档正在打印为一个三页的 PDF 文档,第三页上基本上没有任何内容。我的解决方法很简单,我做了两件事。我还没有测试这两个东西是否都是解决这个问题所必需的,但是我会发布任何东西。
在我的 ViewController.m 中的这个方法中:
- (void) webViewDidStartLoad:(UIWebView *)webView
{
webView.scalesPageToFit = YES;
}
然后在我的打印方法中(我有一个打印方法,因为我有多个带有 web 视图和打印按钮的场景。
-(void) printWebView:(UIWebView *)webView {
UIPrintInfo *pi = [UIPrintInfo printInfo];
pi.outputType = UIPrintInfoOutputGeneral;
pi.jobName = webView.request.URL.absoluteString;
pi.orientation = UIPrintInfoOrientationPortrait;
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
pic.printInfo = pi;
pic.showsPageRange= NO;
UIPrintPageRenderer *renderer = [[UIPrintPageRenderer alloc] init];
webView.viewPrintFormatter.printPageRenderer.headerHeight = 30.0f;
webView.viewPrintFormatter.printPageRenderer.footerHeight = 30.0f;
webView.viewPrintFormatter.contentInsets = UIEdgeInsetsMake(0.0f, 30.0f, 0.0f, 30.0f);
webView.viewPrintFormatter.startPage = 0;
[renderer addPrintFormatter:webView.viewPrintFormatter startingAtPageAtIndex:0];
pic.printPageRenderer = renderer;
[pic presentAnimated:YES completionHandler:^(UIPrintInteractionController *pic2, BOOL completed, NSError *error) {
// indicate done or error
}];
}
现在我不知道您的应用程序是否需要所有这些,但我添加的帮助我解决缩放问题的行是
webView.scalesPageToFit = YES;
和 pic.showsPageRange=NO;
这可能看起来有点奇怪,但从我读过的内容来看,
pic.showsPageRange= NO;
是这里的关键。如果将其设置为是,XCode AirPrint 会缩放页面,并且你的页边距会像我在我的 web 视图中加载我的 PDF 一样搞砸。我实际上是在 StackOverflow 上读到的,并且想感谢帖子答案的作者,但我很难找到他的帖子。这似乎有点权衡,因为打印对话框将不再显示正在打印的文档的页面范围,但是对于短文档,我个人认为它值得权衡实现缩放文档打印与冗长的解决方法。
无论如何,我希望这对你有用,如果你发现更好的东西,请告诉我们。
PS 我知道我的格式化/渲染代码都搞砸了,我试图弄清楚如何在 XCode 中操作打印选项并且还没有删除不必要的行。