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

相关推荐
Mh7 小时前
别再只会 `find` 了:Map 在前端业务里的真实用法
前端·javascript
陈随易8 小时前
FFmpeg 9.0 发布,代号 Lei,音视频处理再升级
前端·后端·程序员
爱丶狸8 小时前
Grafana_Zabbix_ImageRenderer_部署与前端操作手册
linux·前端·zabbix·grafana·kylin
用户0595401744611 小时前
把AI对话记忆存储测试从手工改成Playwright+pytest,覆盖率从20%提到96%,回归时间缩短90%
前端·css
kyriewen11 小时前
别再这样写TypeScript了——Code Review中最常见的8个反模式
前端·javascript·typescript
名字还没想好☜11 小时前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
午安~婉12 小时前
GitHub Token/ GitHub Stats统计显示图异常
前端·github·vercel·github token
码云之上12 小时前
AI Agent 工程化总览篇:从 Prompt 到 Harness
前端·人工智能
2501_9269783312 小时前
以说明书 DNA 为模板——完整 AGI 的结构图景
前端·人工智能·经验分享·笔记·ai写作
IT_陈寒12 小时前
Vite静态资源引用这个坑我踩得有点疼
前端·人工智能·后端