WKWebView生成PDF

2024-04-09 07:20
文章标签 生成 pdf wkwebview

本文主要是介绍WKWebView生成PDF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

在使用 WKWebView 将网页内容保存为 PDF 文件时,您可以设置打印页面的大小和可打印区域,以确保生成的 PDF 文件符合您的需求。在 WKWebView 中,您可以使用 UIPrintPageRenderer 类的 paperRect 和 printableRect 属性来设置页面的大小和可打印区域。

二、示例代码

下面是一个示例代码,演示如何使用 WKWebView、UIPrintPageRenderer、paperRect 和 printableRect 来保存网页内容为 PDF 文件,并设置页面大小和可打印区域:

import UIKit
import WebKitclass ViewController: UIViewController, WKNavigationDelegate {var webView: WKWebView!override func viewDidLoad() {super.viewDidLoad()// 创建 WKWebViewwebView = WKWebView(frame: view.bounds)webView.navigationDelegate = selfview.addSubview(webView)// 加载网页if let url = URL(string: "https://www.example.com") {let request = URLRequest(url: url)webView.load(request)}}func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {// 网页加载完成后保存为 PDFwebView.createPDF { pdfData inguard let pdfData = pdfData else {print("Failed to create PDF data")return}// 保存 PDF 数据到本地文件let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]let pdfPath = documentsPath.appendingPathComponent("webContent.pdf")do {try pdfData.write(to: pdfPath)print("PDF file saved at: \(pdfPath)")} catch {print("Error saving PDF file: \(error.localizedDescription)")}}}
}extension WKWebView {func createPDF(completion: @escaping (Data?) -> Void) {let printPageRenderer = UIPrintPageRenderer()printPageRenderer.addPrintFormatter(self.viewPrintFormatter(), startingAtPageAt: 0)let paperRect = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4 paper size in pointslet printableRect = paperRect.insetBy(dx: 0, dy: 0)printPageRenderer.setValue(NSValue(cgRect: paperRect), forKey: "paperRect")printPageRenderer.setValue(NSValue(cgRect: printableRect), forKey: "printableRect")let pdfData = printPageRenderer.generatePDF()completion(pdfData)}
}extension UIPrintPageRenderer {func generatePDF() -> Data {let pdfData = NSMutableData()UIGraphicsBeginPDFContextToData(pdfData, self.paperRect, nil)self.prepare(forDrawingPages: NSMakeRange(0, self.numberOfPages))let bounds = UIGraphicsGetPDFContextBounds()for i in 0..<self.numberOfPages {UIGraphicsBeginPDFPage()self.drawPage(at: i, in: bounds)}UIGraphicsEndPDFContext()return pdfData as Data}
}

在上面的代码中,我们扩展了 WKWebView 类,并添加了 createPDF 方法来保存网页内容为 PDF 文件。在 createPDF 方法中,我们创建了一个 UIPrintPageRenderer 实例,并设置了页面的大小和可打印区域。最后,我们使用 generatePDF 方法生成 PDF 数据并返回。

使用 WKWebViewUIPrintPageRendererpaperRectprintableRect 在 iOS 中保存网页内容为自定义大小和可打印区域的 PDF 文件。

这篇关于WKWebView生成PDF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/887523

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.