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

ubuntu2204安装显卡驱动+多版本的cuda+cudnn+多版本tensorRT

cuda的版本更新速度很快,这也带动TensorRT的更新速度。TensorRT SDK的更新直接从版本8升级到版本10(其实有版本9,和8相比没有大的改变)。tensorRT部署模型的很多接口都发生了较大的改变。为了体验不同版本的cuda和tensorRT的推理,本文考虑在ubuntu2204系统中安装多个版本的cuda和tensorRT。

1. 检查自己电脑的硬件情况

(1)检查显卡硬件

lspci | grep VGA

我的硬件情况如下:

(2)检查电脑系统

lsb_release -a

我的电脑系统显示如下:

(3)检查电脑的驱动以及安装驱动

ubuntu-drivers devices

比如我的输出就是这样的:

如果没有驱动的话,看电脑推荐的来直接安装就可以,比如我的recommended是550,那么直接随时用如下指令安装即可

sudo apt install nvidia-driver-550

(4) 查看GPU相关信息

nvidia-smi

我的显示如下:

注意这里的右上角的CUDA Version:12.4,这个表示当前的驱动可以最高支持安装的cuda是12.4版本的。

2. 安装cuda+cudnn

2.1 安装cuda

cuda的下载地址:CUDA Toolkit Archive | NVIDIA Developer

下载的网页如下:

在Archived Releases下面找到合适自己的电脑的版本,然后点击CUDA Tookit出现如下界面,需要根据自己的电脑系统选择安装方式,如下是我选择的参数

我这里直接使用runfile(local)的方式安装cuda,下面的提示直接wget下载这个软件。复制下载链接终端输入回车即可

终端输入:

wget https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda_12.0.1_525.85.12_linux.run

显示下载如下:

下载完成后,把这个.run的安装包复制到新建的文件夹内,比如移动到/home/zpec/software/cuda-12.0文件夹下面。然后执行安装指令

sudo sh cuda_12.0.0_525.60.13_linux.run

输入电脑的安装密码之后,终端弹出如下几个选项:

因为我们之前已经安装过驱动,如果选择abort,这里会直接删除电脑的驱动,然后后面的步骤安装驱动。我这里直接选择continue然后回车;出现如下选项

输入accept后然后回车;出现如下选项:

这里我做的这个选项,只选择cuda tookit然后install,回车后出现如下:

这里的表示建立软链接给/usr/local/cuda。此时安装cuda的一些选项参数选择完毕后,系统开始安装cuda,安装完成后的情况如下:

输出界面显示当前的cuda需要至少525的确定可以使用,我们安装的驱动是550,这里不用管它。配置当前cuda的环境变量,打开./bashrc输入

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

然后保存就可以配置好环境变量了。检查cuda版本

nvcc -V

我的正常显示的环境如下:

注意:在/usr/local/文件夹下面原本不存在cuda的文件夹的,但是当我们安装cuda的时候,会创建一个cuda的文件夹,当前cuda文件夹是被链接到其他cuda版本的。

在我的电脑中,我安装了多个不同cuda版本,比如cuda11.8,cuda12.0,cuda12.3。如下

如何需要链接其他版本的cuda,可以如下:

sudo rm /usr/local/cuda #删除当前被软连接的cudasudo ln -s /usr/local/cuda-11.8 /usr/local/cuda #链接需要的cuda版本即可

通过这两条指令就可以重新建立cuda11.8软链接,然后执行nvcc -V后出现如下:

根据自己的电脑的实际使用,建立合适的软连接。

2.2 安装cudnn

cudnn的下载地址是:cuDNN Archive | NVIDIA Developer

下载界面是:

选择合适的cudnn版本,由于我下载的cuda12.0,我这里下载8.9.7,下载到cuda-12的文件夹内

解压:

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz

cudnn的安装只是把cudnn的头文件和动态库复制到对应的cuda安装包里面,执行

sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/* /usr/local/cuda-12.0/includesudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.0/lib64

验证cudnn安装是否正确:

cat /usr/local/cuda-12.0/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

出现如下结果说明安装成功:

3 安装TensorRT

TensorRT的下载地址:TensorRT Download | NVIDIA Developer

选择合适的自己cuda版本的TensorRT,选择Tar安装包安装。把安装包移动到文件夹内,我把下载的软件包复制到/opt/TensorRT/

然后直接解压:

sudo tar -xvf TensorRT-10.3.0.26.Linux.x86_64-gnu.cuda-12.5.tar.gz 

然后把TensorRT的环境变量添加到系统中即可:

我的配置环境如下:

# tensorRT10.3的路径
export LD_LIBRARY_PATH=/opt/TensorRT/TensorRT-10.3.0.26/lib:$LD_LIBRARY_PATH
export PATH=/opt/TensorRT/TensorRT-10.3.0.26/bin:$PATH

这里可以配置多个TensorRT的版本。

使用同样的方法可以安装多个不同版本的TensorRT,同样配置好环境。

验证是否安装正确:

进入/opt/TensorRT/TensorRT-10.3.0.26/samples/sampleOnnxMNIST文件夹,执行如下指令:

sudo make

可以出现如下界面:

说明可执行程序运行成功,然后进入/opt/TensorRT/TensorRT-10.3.0.26/bin,在当前文件夹有刚刚make的结果sample_onnx_mnist。直接运行

看到这个说明执行成功。

可以看到我的tensoRT安装的版本有如下

相关文章:

ubuntu2204安装显卡驱动+多版本的cuda+cudnn+多版本tensorRT

cuda的版本更新速度很快,这也带动TensorRT的更新速度。TensorRT SDK的更新直接从版本8升级到版本10(其实有版本9,和8相比没有大的改变)。tensorRT部署模型的很多接口都发生了较大的改变。为了体验不同版本的cuda和tensorRT的推理,本文考虑在u…...

从One-Hot到TF-IDF:NLP词向量演进解析与业务实战指南

从One-Hot到TF-IDF:词向量演进之路 开场白: 想象一下,你试图用Excel表格分析《红楼梦》的情感倾向——每个字词都是孤立的单元格,计算机看到的只有冰冷的0和1,而“黛玉葬花”的凄美意境却消失得无影无踪。这就是NLP工…...

Ubuntu下载火狐浏览器

在 Ubuntu 中卸载 Firefox 浏览器的方法取决于其安装方式(通过 APT 包管理器 或 Snap)。以下是详细的步骤: 1. 确认 Firefox 的安装方式 首先检查 Firefox 是通过哪种方式安装的: # 检查 Snap 版本 snap list | grep firefox# 检…...

C++ - 数据容器之 unordered_map(声明与初始化、插入元素、访问元素、遍历元素、删除元素、查找元素)

一、unordered_map unordered_map 是 C STL 中的一个关联容器,它有如下特点 unordered_map 存储键值对,使用哈希表实现 unordered_map 的每个键在容器中只能出现一次 unordered_map 的存储的键值对是无序的 平均情况下,查找、插入、删除都…...

什么是具身智能?其发展五大趋势预测

3月29-30日,由中国人工智能学会主办的第二届中国具身智能大会(CEAI 2025)在北京海淀成功召开。中国科学院院士、南京大学党委书记谭铁牛在大会作题为“具身智能:学科交叉的新前站”的主题演讲。他表示,具身智能是发展人…...

智能指针的使用及其原理(C++)

1. 智能指针的使用场景分析 通过下面的例子来分析: double Divide(int a, int b) {// 当b 0时抛出异常if (b 0){throw "Divide by zero condition!";}else{return (double)a / (double)b;} }void Func() {int* array1 new int[10];int* array2 new …...

使用 react-three-fiber 快速重构 Three.js 场景⚛️

不明白的知识先放在一边,激发兴趣是第一步,所以不必纠结代码的细节,相信我你很快就会爱上这种感觉!!! 今天,我们将更进一步,将上一篇中vite npm传统 Three.js 原生代码完整 重构为 …...

索尼相机视频文件格式规格

XAVC,作为Sony所独有的一种视频编码格式,具有其独特的压缩技术。其中,L代表的是Long GOP压缩方式,这种方式在视频编码中,侧重于实现帧间的高效压缩,以提升整体的编码效率。而I则对应着Intra压缩方式&#x…...

Audacity命令:“文件”菜单相关命令

1 Audacity命令:“文件”菜单相关命令 文件菜单提供用于创建、打开和保存 Audacity 项目以及导入和导出音频文件的命令。 1.1 文件菜单命令列表 文件菜单一级菜单的命令列表 Scripting IdActionParameters描述New:New无创建一个新的空白项目窗口,用于处…...

chrome提示https不安全, 不能记住账号密码怎么办? 可以利用js输入账号

背景: 在内网搭建的服务, 由于https证书问题, 可能会被chrome浏览器提示不安全 此时, 默认的记住账号密码功能就无法使用, 那么此时只能手动输入了吗? 想到了几种方案 1.利用外置软件, 模拟按键输入(比如按键精灵, 缺点是依赖外部软件, 运行速度也慢, 且执行时占用了输入焦…...

ubuntu18.04安装miniforge3

1.下载安装文件 略(注:从同事哪里拖来的安装包) 2.修改安装文件权限 chmod x Miniforge3-Linux-x86_64.sh 3.将它安装到指定位置 micromamba activate /home/xxx/fxp/fromDukto/miniforge3 4.激活 /home/xxx/fxp/fromDukto/miniforge3…...

Flutter容器组件深度解析

引言 在 Flutter 开发中,容器组件是构建用户界面的基石。它们为开发者提供了强大而灵活的方式来组织和布局界面元素。通过使用容器组件,开发者可以轻松地控制子组件的大小、位置、边距、背景等属性,从而创建出美观、易用且响应式的界面。本文…...

Java 实现 List<String> 与 String 互转

在 Java 开发过程中&#xff0c;有时需要将 List<String> 转为 String 存储&#xff0c;后续使用时再还原回去。此时就需要 Java 实现 List<String> 与 String 互转。以下是一种互转方式。 采用如下工具包实现。 <dependency><groupId>org.apache.com…...

无人设备遥控器之数据分析与处理篇

无人设备遥控器的数据分析与处理是提升设备智能化水平和操作效率的关键环节。以下从数据采集、预处理、分析方法、处理技术、应用场景五个方面展开分析&#xff1a; 一、数据采集 无人设备遥控器通过多种方式采集数据&#xff0c;主要包括&#xff1a; 控制信号数据&#xf…...

【Django】教程-14-验证码+登录页

【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 【Django】教程-5-ModelForm增删改查规则校验【正则钩子函数】 【Django】教程-6-搜索框-条件查询前后端 【Django】教程…...

flask实现上传文件与下载文件

以下是一个使用Python Flask实现的文件上传和下载服务的完整步骤及代码示例:供参 功能说明: 上传文件: POST请求到/upload端点 需要包含一个名为file的文件参数 支持的文件类型包括:txt, pdf, png, jpg, jpeg, gif, doc, docx, xlsx, zip 返回上传成功信息和下载链接 下载…...

用Java写一个MVCC例子

MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff09;是一种用于数据库管理系统中处理并发访问数据的技术。它允许事务在查询时看到数据的一个快照版本&#xff0c;而不是直接查看最新的提交数据。这种方法不仅提高了并发性能&#xff0c…...

【遥感科普】卫星影像产品处理等级有哪些?

遥感数据等级划分是指将卫星遥感原始数据按处理深度分为不同等级&#xff0c;用户可快速匹配需求&#xff1a;初级数据适合算法开发&#xff0c;高级产品可直接用于分析。分级体系促进数据标准化&#xff0c;降低使用门槛&#xff0c;提升跨机构协作效率&#xff1b;同时便于质…...

第十二天 - Flask/Django基础 - REST API开发 - 练习:运维管理后台API

从零开始用Flask/Django构建运维管理后台API&#xff08;实战指南&#xff09; 前言&#xff1a;为什么选择Python Web框架&#xff1f; 在运维自动化领域&#xff0c;构建管理后台是每个运维工程师的必修课。本文将通过Flask和Django两个主流框架&#xff0c;手把手教你构建…...

计算机视觉与深度学习 | 视觉里程计(Visual Odometry, VO)学习思路总结

视觉里程计(Visual Odometry, VO)学习思路总结 视觉里程计(VO)是通过摄像头捕获的图像序列估计相机运动轨迹的技术,广泛应用于机器人、自动驾驶和增强现实等领域。以下是一个系统的学习路径,涵盖基础理论、核心算法、工具及实践建议:一、基础理论与数学准备 核心数学工具…...

解决vite.config.ts 引入scss 预处理报错

版本号&#xff1a; "sass": "^1.86.3","sass-loader": "^16.0.5","vite": "^6.2.0" 报错图片&#xff1a; vite.config.ts 一开始文件错误 修改之后&#xff1a;完美解决报错&#xff08;不过我还没搞懂为什么…...

Design Compiler:中断命令/脚本的执行

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 中断命令的执行 如果在使用命令时输入了错误的选项或输入了错误的命令&#xff0c;可以使用CtrlC手动中断命令的执行并返回到dc_shell中&#xff0c;此时终端…...

图灵逆向——题十七-字体加密

十七题是一个很经典的字体加密案例&#xff0c;很适合新手入门~ 目录列表 过程分析代码实现 过程分析 打开开发者工具直接看请求&#xff0c;发现它请求的没有加密参数&#xff0c;以为万事大吉的你迫不及待的点击了响应&#xff0c;然后就会发现依托。。。 返回的数据中字体…...

uniapp微信小程序图片生成水印

整体思路&#xff1a; 用户通过uni.chooseImage选择图片后&#xff0c;获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息&#xff0c;也就是图片宽高。图片宽高等比缩放至指定大小&#xff0c;不然手机处理起来非常久&#xff0c;因为手机随便拍拍就很大。…...

【MySQL】001.MySQL安装

文章目录 一. MySQL在Ubuntu 20.04 环境安装1.1 更新软件包列表1.2 安装MySQL服务器1.3 配置安全设置1.4 检查mysql server是否正在运行1.5 进行连接1.6 查询自带的数据库 二. 配置文件的修改三. MySQL连接TCP/IP时的登陆问题四. MySQL中的命令 一. MySQL在Ubuntu 20.04 环境安…...

《深度剖析 Linux 权限管理:从基础到进阶,解锁系统安全密钥》

一、权限管理 1.1 普通权限&#xff08;普通文件和目录&#xff09; [rootmd ~]# ll total 124 drwxr-xr-x. 2 root root 28 Feb 16 15:48 : drwxr-xr-x. 3 root root 64 Mar 9 00:22 111 -rw-r--r--. 1 root root 43 Feb 17 22:44 1.txt 1 2 …...

2025年4月9日-华为暑期实习-第一题-100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 软件依赖链分析系统 问题描述 LYA 是某软件公司的工程师,负责管理公司的软件依赖关系。每个软件组件都有可能依赖于其他组件,形成一个依赖链。为了确保系统的稳定性,LYA 需要…...

leetcode 377. Combination Sum IV

这道题也是完全背包问题。这道题和第518题几乎一摸一样&#xff0c;所不同的是&#xff0c;第518题要求的是组合数&#xff0c;而第377题要求的是排列数。虽然本题题目描述中说求的是组合数&#xff0c;但从例子1中&#xff08;1&#xff0c;1&#xff0c;2&#xff09;和&…...

【TS学习】(22)什么是混入

在 TypeScript 中&#xff0c;混入&#xff08;Mixins&#xff09; 是一种设计模式&#xff0c;用于将多个类的功能组合到一个类中。它是一种实现代码复用的方式&#xff0c;尤其适用于需要从多个来源继承功能的场景。TypeScript 不直接支持多继承&#xff0c;但可以通过混入模…...

Firebase Studio,谷歌推出的云端AI 开发环境

Firebase Studio 是谷歌推出的一款基于云的全栈应用开发环境&#xff0c;旨在帮助开发者高效构建和交付集成 AI 功能的高质量应用。该平台结合了 Project IDX 和专用的 Firebase AI 代理&#xff0c;提供从后端到前端、移动应用等多维度的开发支持。 Firebase Studio是什么 F…...

电能质量在线监测分析装置支持实时监测、数据存储及远程传输,适用于电网、工业等场景

电能质量在线监测分析装置主要技术指标 2.1工作电源 交流&#xff1a;220V10% &#xff1b;50Hz0.5Hz&#xff1b;谐波畸变率不大于15&#xff05; 直流&#xff1a;220V10%&#xff0c;纹波系数不大于5% 2.2电流信号输入 输入方式&#xff1a;电流互感器输入&#xff1b; …...

线代[13]|线性代数题37道以及数学分析题3道(多图预警)

博主首次发布于CSDN&#xff0c;禁止转载&#xff01;&#xff08;CSDN&#xff1a;汉密士2025&#xff09; 文章目录 一、缘起&#xff5c;《俗说矩阵》课程目录照片存档&#xff5c;线性代数学习脉络&#xff5c;线代习题集封面存档&#xff5c;未来——我与线性代数的纠缠 二…...

gitlab内置pgsql数据库迁移

gitlab内置pgsql数据库迁移 创建gitlab备份方法一&#xff0c;使用pg_dump备份方法二 使用gitlab工具 gitlab-backup 备份 运行sql文件注意事项ERROR: extension "btree_gist" has no installation script nor update path for version "1.7"btree_gist 找…...

IDEA、Webstorm使用账号密码登录Gitlab

在开发过程中&#xff0c;为了保证代码安全&#xff0c;更改了gitlab司库的密码&#xff0c;当更新项目时&#xff0c;发现更新失败了。让填入access_token&#xff0c;gitlab网页设置中虽然generate了token&#xff0c;也填入了它&#xff0c;但是还是报错401unauthorized&…...

水利水电安全员ABC适合哪些人考?

水利水电安全员证是水利工程建设领域的重要职业资格证书&#xff0c;主要涉及水利水电工程施工安全管理、风险防控和应急处理等工作。那么&#xff0c;哪些人适合考取&#xff1f; 哪些人适合考水利水电安全员&#xff1f; 1. 水利水电工程从业人员 ✅ 施工管理人员&#xf…...

Service Mesh 深度解析与 Istio+Envoy 实现方案

Service Mesh 深度解析与 IstioEnvoy 实现方案 一、Service Mesh 技术全景 核心架构演进 第一代架构&#xff1a;以库形式集成&#xff08;如 Netflix OSS&#xff09;第二代架构&#xff1a;Sidecar 代理模式&#xff08;如 Linkerd&#xff09;第三代架构&#xff1a;全功…...

使用uv管理python项目环境

安装uv 使用默认python环境安装uv&#xff08;把uv安装到默认python环境&#xff09;&#xff1a;pip install uv 创建python项目虚拟环境 如果是已有项目并且项目中有uv.lock文件&#xff0c;直接运行 uv run main.py&#xff0c;这会默认使用uv.lock文件创建虚拟环境如果是新…...

【Code】《代码整洁之道》笔记-Chapter9-单元测试

第9章 单元测试 过去十年以来&#xff0c;编程专业领域进步很大。1997年时&#xff0c;没人听说过测试驱动开发。对于我们之中的大多数人来说&#xff0c;单元测试是那种用来确保程序“可运行”的用过即扔的短代码。我们辛勤地编写类和方法&#xff0c;再弄出一些特殊代码来测…...

数据结构-顺序表

目录 基本概念 什么是数据结构&#xff1f; 数据 结构 线性结构 树形结构 网状结构 第一章绪论 了解概念 几个概念 数据存储方式&#xff1a; 算法的五个重要特性: 算法设计的要求: 总结 线性表 线性表的定义&#xff1a; 顺序表的设计思想 定长顺序表 不定…...

端到端语音识别服务重构方案

以下是重构ASR服务架构&#xff0c;集成Whisper V3Conformer混合模型的端到端实现方案&#xff0c;经过技术增强与流程优化&#xff1a; 端到端语音识别服务重构方案 基于Whisper V3Conformer混合架构 系统架构设计 采用四层微服务架构&#xff0c;支持水平扩展与模块化部署…...

耳根圆通与禅定的交融与分野

引言 在浩瀚的修行体系中&#xff0c;耳根圆通与禅定的关系犹如月映千江——本质同一而显相各异。本文以《楞严经》为经教依据&#xff0c;结合禅宗心法与现代实证视角&#xff0c;系统解析二者在修行原理、实践路径与终极旨归中的深刻关联与微妙差异&#xff0c;揭示这一古老智…...

python基础语法:缩进规则

Python 的缩进规则是其语法的重要组成部分&#xff0c;它通过缩进来表示代码块的层次结构&#xff0c;而不是像其他语言&#xff08;如 C 或 Java&#xff09;那样使用大括号 {}。以下是 Python 缩进规则的详细说明&#xff1a; 1. 缩进的基本规则 代码块的标识&#xff1a;Pyt…...

从0到1的Python接口自动化学习路线

Python 是一门非常适合初学者且功能强大的编程语言,它在接口自动化测试领域具有广泛应用。 以下是一份针对 Python 与接口自动化测试的详细学习路线,帮助你从零开始学习并逐步掌握相关知识。 第一阶段:Python基础 目标:掌握 Python 基本语法和编程能力。 一、学习内容 1.…...

大数据(7.3)Kafka量子安全加密实践指南:构建抗量子计算攻击的消息系统

目录 一、量子计算带来的加密革命1.1 量子计算机的威胁时间表1.2 Kafka现有加密机制脆弱性分析 二、后量子加密算法选型2.1 NIST标准化算法矩阵2.2 混合加密最佳实践 三、Kafka量子安全改造方案3.1 Bouncy Castle量子安全Provider3.2 Kafka服务端配置 四、实战案例&#xff1a;…...

【11408学习记录】英语语法精讲:主从复合句之状语从句全解析——以时间状语从句为例

时间 英语语法总结—— 主从复合句状语从句从句位置从句的分类 每日一句词汇第一步&#xff1a;找谓语第二步&#xff1a;断开第三步&#xff1a;简化第一句第二句第三句第四句 英语 语法总结—— 主从复合句 状语从句 状语从句指的是一个句子作状语&#xff0c;表达“描述性…...

深度分页及优化建议

深度分页的定义 深度分页是指在分页查询中&#xff0c;当用户请求非常靠后的页面时&#xff0c;数据库需要处理大量数据&#xff0c;导致查询性能显著下降的情况。例如&#xff0c;一个查询结果有 100 万条记录&#xff0c;而用户要查询第 999 页&#xff08;每页 10 条记录&a…...

阿里云kafka集成boot在docker启动找不到kafka.client.truststore.jks文件问题

此问题困扰了我好久&#xff0c;看阿里云官方文档&#xff0c;建议配置绝对路径&#xff0c;但项目部署在docker没有绝对路径&#xff0c;开始以为配置在docker的/root下即可&#xff0c;但报找不到文件&#xff0c;后来改相对路径 ./kafka.client.truststore.jks,…/…/还是找…...

kafka 集群搭建,开启sasl认证

Kafka提供了多种认证方式来保护集群的安全性,包括以下几种常见的认证方式: SSL/TLS认证:Kafka支持使用SSL/TLS协议对网络通信进行加密和认证。通过使用SSL/TLS证书对客户端和服务器进行身份验证,可以确保通信的机密性和完整性。SASL/PLAIN认证:SASL/PLAIN是一种基于用户名…...

在 iOS 项目中,Info.plist文件用于配置应用的基本信息和权限

在 iOS 项目中,Info.plist 文件用于配置应用的基本信息和权限。以下是常见的需要添加的权限及其说明: 常见权限及说明 NSCameraUsageDescription 说明: 说明应用为何需要访问相机。示例: “我们需要访问您的相机以便您可以拍摄照片。”NSPhotoLibraryUsageDescription 说明:…...

【完整可用】使用openhtmltopdf生成PDF(带SVG)

文章目录 前言OpenHTMLToPDF 简介maven配置依赖字体文件demo代码其他资源放置截图防止maven编译字体文件 前言 AI和网上都是跑不起来或者版本过低的&#xff0c;还有各种BUG的。本文都是查阅官方文档得出的。如果你能跑起来请给个大大的赞&#xff01; OpenHTMLToPDF 简介 Ope…...