需求是使用系统提供的打印功能将HTML代码打印出来
1、使用CSS @page
设置边距(iOS不生效)
@page {
margin: 0;
padding: 0;
size: A6 portrait;
}
在 Android 中边距设置生效的,但是在 iOS 系统使用CSS @page规则是不生效的
当从 iOS 系统打印网页时,我试图删除或减少页边距,尝试过@page
指令的各种形式比如下面 MDN 所写的,但没有产生任何效果。
https://developer.mozilla.org/zh-CN/docs/Web/CSS/@page
2、在 iOS 原生代码中修改页边距
UIViewPrintFormatter *formatter = [webView viewPrintFormatter];
webView.hidden = true;
formatter.perPageContentInsets = UIEdgeInsetsMake(20, 15, 0, 0);
UIPrintPageRenderer *renderer = [[UIPrintPageRenderer alloc] init];
renderer.headerHeight = 0;
renderer.footerHeight = 0;
[renderer addPrintFormatter:formatter startingAtPageAtIndex:0];
printController.printPageRenderer = renderer;
formatter.perPageContentInsets = UIEdgeInsetsMake(20, 15, 0, 0);
这行代码设置每页内容的内边距(即打印内容与页面边缘之间的距离)。UIEdgeInsetsMake 方法的参数分别表示上、左、下、右的边距。如上,上边距为 20 点,左边距为 15 点,下边距为 0 点,右边距为 0 点。
renderer.headerHeight = 0;
设置打印页面的头部高度为 0。打印的每一页上都不会显示头部。
renderer.footerHeight = 0;
设置打印页面的底部高度为 0。打印的每一页上都不会显示底部。