Dan*_*edo 3 objective-c ios airprint
我正在将一个NSF的pdf文件加载到webview中:
[webView loadData:pdf MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
Run Code Online (Sandbox Code Playgroud)
它在UIWebView中显示精美,并正确显示pdf的页数.
然而,当我尝试打印时,我得到整个页面,然后是一个左上页,可能是单个pdf页面的最后十分之一.换句话说,我没有一对一的通信.它似乎没有缩小内容.
如何缩放打印输出?我用这个片段打印:
UIPrintInteractionController *pic =
[UIPrintInteractionController sharedPrintController];
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = printName;
printInfo.duplex = UIPrintInfoDuplexNone;
pic.printInfo = printInfo;
pic.printFormatter = [webView viewPrintFormatter];
pic.showsPageRange = YES;
Run Code Online (Sandbox Code Playgroud)
这个问题描述了一种涉及缩放输入的方法,但我希望存在更简单的东西.
问候,戴恩
所以我也有这个问题.我使用UIWebView访问在窗口中打开PDF文档的网站链接.打印PDF时,文档在底部被裁剪并发送到下一页.这很烦人,因为现在一个两页的PDF文档打印为三页PDF文档,第三页基本上没有任何内容.我的修复很简单我做了两件事.我还没有测试过这两个问题是否都是解决这个问题的必要条件,但我会发布任何内容.
在我的ViewController.m中的这个方法中:
- (void) webViewDidStartLoad:(UIWebView *)webView
{
webView.scalesPageToFit = YES;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的打印方法(我有一个打印方法,因为我有多个场景与webview和打印按钮.
-(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
}];
}
Run Code Online (Sandbox Code Playgroud)
现在我不知道你应用程序是否需要所有这些,但我添加的行有助于解决我的扩展问题
webView.scalesPageToFit = YES;
Run Code Online (Sandbox Code Playgroud)
和pic.showsPageRange = NO;
这可能看起来有点奇怪,但从我所读到的,
pic.showsPageRange= NO;
Run Code Online (Sandbox Code Playgroud)
是关键在这里.如果将其设置为是,则XCode AirPrint会缩小分页的所有内容,并且您的边距会像我在我的webview中加载的PDF一样搞砸了.我实际上是在StackOverflow上读到这个,并且想要归功于帖子答案的作者,但我在查找帖子时遇到了一些困难.这似乎有点折衷,因为打印对话框将不再显示正在打印的文档的页面范围,但是对于简短文档,我个人认为值得权衡实现缩放文档打印的简单性与冗长的解决方法.
无论如何,我希望这对你有用,如果你找到更好的东西,请告诉我们.
PS我知道我的格式化/渲染代码是全乱了,我试图找出我怎么能操纵XCode中的打印选项,并没有删除不必要的行呢.
| 归档时间: |
|
| 查看次数: |
4341 次 |
| 最近记录: |