当前位置: 首页 > news >正文

js实现将文本转PDF格式并下载到本地

html里面需要引入jspdf.umd.min.js和FileSaver.js
jspdf.umd.min.js:https://www.npmjs.com/package/jspdf
FileSaver.js:https://download.csdn.net/download/weixin_45791806/87272893?spm=1001.2014.3001.5503
同时项目的根部目录也需要引入SimHei.ttf:https://www.baidu.com/s?wd=SimHei.ttf(百度)
代码使用:

 $('.surplus-btn').click(function () {// 调用函数并传入文本内容和页面尺寸const textContent = '文本内容';convertTextToPDF(textContent);});/**PDF**/convertTextToPDF: function (text) {// 创建一个新的 jsPDF 实例const { jsPDF } = window.jspdf;const doc = new jsPDF();// 设置字体为 doc.addFont('/SimHei.ttf', 'simhei', 'normal');doc.setFont("simhei");// 设置字体大小doc.setFontSize(12);// 将文本分割成适应页面大小的多个段落const paragraphs = doc.splitTextToSize(text, doc.internal.pageSize.getWidth() - 20);// 将段落逐个添加到 PDF 中let y = 10;paragraphs.forEach((paragraph) => {// 检查当前页面是否还有足够的空间容纳段落if (y + 10 > doc.internal.pageSize.getHeight()) {// 如果没有足够空间,添加新页面doc.addPage();y = 10; // 重置 y 坐标}doc.text(paragraph, 10, y);y += 10;});// 保存 PDF 文件doc.save('文档标题' + ".pdf");
},

相关文章:

js实现将文本转PDF格式并下载到本地

html里面需要引入jspdf.umd.min.js和FileSaver.js jspdf.umd.min.js:https://www.npmjs.com/package/jspdf FileSaver.js:https://download.csdn.net/download/weixin_45791806/87272893?spm1001.2014.3001.5503 同时项目的根部目录也需要引入SimHei.tt…...

Servlet+JDBC实战开发书店项目讲解第四篇:登录实现

ServletJDBC 实战开发书店项目讲解第四篇:登录注册实现 在本篇博客中,我们将继续讲解 ServletJDBC 实战开发书店项目。这次我们将重点讲解如何实现登录和注册功能。 1. 创建数据库表 首先,我们需要在数据库中创建两个表,一个用…...

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

2023年8月6日华为开发者大会2023(HDC.Together)圆满收官,伴随着HarmonyOS 4的发布,华为向开发者发布了汇聚所有最新开发能力的HarmonyOS NEXT开发者预览版,并分享了围绕“一次开发,多端部署” “可分可合&a…...

【Java从0到1学习】09 正则表达式

1. 正则表达式概述 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 正则表达式,又称正规表示法、常规表示法&#xff…...

log4j:WARN No appenders could be found for logger问题

本文将idea场景下的使用。 IDEA中,将配置文件命名为log4j.properties(该命名才会被自动加载), 并放到某个目录下(通常放到resources目录),并在resources上右键,找到Mark Directory a…...

【Java】批量生成条形码-itextpdf

批量生成条形码 Controller ApiOperation("商品一览批量生成商品条形码")PostMapping("/batchGenerateProdBarCode")public void batchGenerateProdBarCode(RequestBody ProductListCondition productListCondition,HttpServletResponse response){import…...

SpringBoot登录、退出、获取用户信息的session处理

1、登录方法&#xff1a;login PostMapping("/user/login")public ResponseVo<User> login(Valid RequestBody UserLoginForm userLoginForm,HttpSession session) {ResponseVo<User> userResponseVo userService.login(userLoginForm.getUsername(), …...

【软件测试】随笔系统测试报告

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: 软件测试 随笔系统采用 SSM 框架前后端分离的方法实现&#xff0c;本文主要针对功能&#xff1a;登录&#xff0c;注册&#xff0c;注销&#xff0c;写随笔&#xff0c;删除随笔&#xff0c;随笔详情页…...

vue中使用html2canvas+jsPDF实现pdf的导出

导入依赖 html2canvas依赖 npm install html2canvasjspdf依赖 npm install jspdfpdf导出 以导出横向&#xff0c;A4大小的pdf为例 规律&#xff1a;1. html2canvas 中&#xff0c;在保持jsPDF中的宽高不变的情况下&#xff0c;设置html2canvas中的 width 和 height 值越小&a…...

Linux学习之firewallD

systemctl status firewalld.service查看一下firewalld服务的状态&#xff0c;发现状态是inactive (dead)。 systemctl start firewalld.service启动firewalld&#xff0c;systemctl status firewalld.service查看一下firewalld服务的状态&#xff0c;发现状态是active (runni…...

【JS学习】Object.assign 用法介绍

Object.assign 是ES6中的一个方法。该方法能够实现对象的浅复制以及对象合并。Object.assign 并不会修改目标对象本身&#xff0c;而是返回一个新的对象&#xff0c;其中包含了所有源对象的属性。 例1 2个对象合并 const target { a: 1, b: 2 }; const source { b: 3, c: 4…...

【uni-app报错】获取用户收货地址uni.chooseAddress()报错问题

chooseAddress:fail the api need to be declared in …e requiredPrivateInf 原因&#xff1a; 小程序配置 / 全局配置 (qq.com) 解决&#xff1a; 登录小程序后台申请接口 按照流程申请即可 在项目根目录中找到 manifest.json 文件&#xff0c;在左侧导航栏选择源码视图&a…...

机器学习、cv、nlp的一些前置知识

为节省篇幅&#xff0c;不标注文章来源和文章的问题场景。大部分是我的通俗理解。 文章目录 向量关于向量的偏导数&#xff1a;雅可比矩阵二阶导数矩阵&#xff1a;海森矩阵随机变量随机场伽马函数beta分布数学术语坐标上升法协方差训练集&#xff0c;验证集&#xff0c;测试集…...

Steam 灵感的游戏卡悬停效果

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Steam 灵感的游戏卡悬停效果</title><style>* {margin: …...

[Openwrt]一步一步搭建MT7981A uboot、atf、openwrt-21.02开发环境操作说明

安装ubuntu-18.04 软件安装包 ubuntu-18.04-desktop-amd64.iso 修改ubuntu管理员密码 sudo passwd [sudo] password for w1804: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully 更新ubuntu源 备份源 sudo cp /etc/apt/so…...

Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理

Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理 目录 Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理 一、简单介绍 二、实现原理 三、注意事项 四、实现步骤 五、关键代码 一、简…...

安全学习DAY16_信息打点-CDN绕过

信息打点-CDN绕过 文章目录 信息打点-CDN绕过本节思维导图相关链接&工具站&项目工具前置知识&#xff1a;CDN配置&#xff1a;配置1&#xff1a;加速域名-需要启用加速的域名配置2&#xff1a;加速区域-需要启用加速的地区配置3&#xff1a;加速类型-需要启用加速的资源…...

genism word2vec方法

文章目录 概述使用示例模型的保存与使用训练参数详解&#xff08;[原链接](https://blog.csdn.net/weixin_44852067/article/details/130221655)&#xff09;语料库训练 概述 word2vec是按句子来处理的Sentences(句子们) 使用示例 from gensim.models import Word2Vec #sent…...

vue3自定义样式-路由-axios拦截器

基于vue,vite和elementPlus 基于elementPlus自定义样式 history模式的路由 在根目录配置jsconfig.json&#xff0c;添加json的配置项。输入自动联想到src目录&#xff0c;是根路径的别名拦截器 如果存在多个接口地址&#xff0c;可以配置多个axios实例 数据持久化之后&#x…...

【mysql】事务的四种特性的理解

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…...

如何搭建与使用 `ZhongFuCheng3y/austin` 开源项目

如何搭建与使用 ZhongFuCheng3y/austin 开源项目 【免费下载链接】austin 消息推送平台&#x1f525; 推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。 项目地址: https://gitcode.com/GitHub_Trending/au/austin 本教程旨在帮助…...

DeepSeek-V3 vs V3-Base:开发者如何根据项目需求选择最适合的模型?

DeepSeek-V3 vs V3-Base&#xff1a;开发者如何根据项目需求选择最适合的模型&#xff1f; 当你在GitHub上搜索代码补全工具&#xff0c;或是在Kaggle上寻找数学竞赛的解题思路时&#xff0c;可能会被各种AI模型的选择搞得眼花缭乱。作为开发者&#xff0c;我们需要的不是"…...

终极Galgame社区完整指南:从零开始构建你的视觉小说精神家园

终极Galgame社区完整指南&#xff1a;从零开始构建你的视觉小说精神家园 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 还在为寻找纯…...

2026论文写作工具红黑榜:一键生成论文工具怎么选?别再瞎找了!

2026年论文写作工具红黑榜出炉&#xff01;红榜优先选千笔AI、ThouPen、豆包&#xff0c;适配国内学术规范&#xff0c;内容严谨可靠&#xff1b;黑榜需避开低质免费工具、无真实引用平台、过度依赖全文生成的工具。选择时可参考三维模型&#xff1a;需求匹配度 - 数据可信度 -…...

小白程序员必看:大模型“语义崩塌”陷阱与收藏攻略!

本文深入解析了“语义崩塌”现象&#xff0c;即在大模型处理海量数据时&#xff0c;向量语义失去区分度导致搜索失效。以斯坦福RAG研究为例&#xff0c;揭示高维空间下“维度灾难”如何导致相关性计算失效&#xff0c;影响企业级应用。文章提出分层检索和基于图谱的检索作为解决…...

RenderDoc实战:5分钟搞定OpenGL性能瓶颈定位(附Android联调技巧)

RenderDoc实战&#xff1a;5分钟定位OpenGL性能瓶颈的完整指南 移动端图形开发最令人头疼的瞬间&#xff0c;莫过于看到测试报告上"FPS波动大"的红色标记&#xff0c;却不知道从哪开始排查。上周团队里新来的工程师花了三天时间逐行检查着色器代码&#xff0c;最后发…...

FPGA密码锁设计避坑指南:状态机划分、时序约束与安全逻辑的那些事儿

FPGA密码锁设计避坑指南&#xff1a;状态机划分、时序约束与安全逻辑的那些事儿 在FPGA开发领域&#xff0c;密码锁设计看似简单&#xff0c;实则暗藏玄机。许多工程师在完成基础功能后&#xff0c;往往会在状态机划分、时序约束和安全逻辑等环节踩坑。本文将结合实战经验&…...

RouterOS网桥VLAN实战:从零构建安全隔离的二层虚拟网络

1. VLAN基础与RouterOS网桥概述 刚接触网络管理的朋友可能经常听到"VLAN"这个词&#xff0c;但总觉得它神秘莫测。其实VLAN就像给一栋办公楼划分不同部门&#xff1a;财务部、研发部、市场部各自有独立的办公区域&#xff0c;既保证了隐私安全&#xff0c;又避免了相…...

实战-EdgeBoard赛事卡:从零部署飞桨模型到智能车竞赛

1. EdgeBoard赛事卡开箱与环境准备 第一次拿到EdgeBoard赛事专用卡时&#xff0c;这块巴掌大的小盒子让我有点怀疑——这么小的板子真能跑动智能车竞赛需要的视觉模型吗&#xff1f;拆开包装后发现&#xff0c;除了板卡本体&#xff0c;配件只有一根Type-C线&#xff0c;确实符…...

Sunshine开源游戏串流:打造你的专属云游戏服务器终极指南

Sunshine开源游戏串流&#xff1a;打造你的专属云游戏服务器终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏&#xff1f;厌倦了被商业云游戏平…...