iOS 系统中使用 webView 打印 html 的打印边距问题

需求是使用系统提供的打印功能将HTML代码打印出来

1、使用CSS @page 设置边距(iOS不生效)

objectivec 复制代码
@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 原生代码中修改页边距

objectivec 复制代码
 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。打印的每一页上都不会显示底部。

相关推荐
夏梦春蝉4 分钟前
ES6从入门到精通:其他特性
前端·javascript·es6
2301_1472583699 分钟前
7月1日作业
java·前端·算法
汪子熙11 分钟前
Angular 应用中手动调用 subscribe 方法的时机与实践探讨
前端
MiyueFE43 分钟前
14 个逻辑驱动的 UI 设计技巧,助您改善任何界面
前端·设计
啃火龙果的兔子1 小时前
前端单元测试覆盖率工具有哪些,分别有什么优缺点
前端·单元测试
小宁爱Python1 小时前
FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
sqlite·html·fastapi
Digitally1 小时前
如何将文件从 iPhone 传输到 Android(新指南)
android·ios·iphone
「、皓子~1 小时前
后台管理系统的诞生 - 利用AI 1天完成整个后台管理系统的微服务后端+前端
前端·人工智能·微服务·小程序·go·ai编程·ai写作
就改了1 小时前
Ajax——在OA系统提升性能的局部刷新
前端·javascript·ajax
凌冰_1 小时前
Ajax 入门
前端·javascript·ajax