rust(pdfium)底层开发实现wasm包给vue3调用

前言

遇到一个业务需求,就是要进行浏览器的PDF功能开发,研究之后发现是使用PDFium进行的,分win/linux/android/ios,还有一个wasm(给浏览器)

开始

你可以下载PDFium进行二次编译,生成你需要的文件,然后在使用rust进行调用开发

也可以来到这个地址下载对应的安装包

这篇不讲C++编译如何操作,感兴趣可以自行AI一下

因为可能涉及偏隐秘的东西,我是想开源码的,但是最后还是算了,显示项目架构即可。

效果图

调用链

复制代码
Vue 3 阅读器界面
        ↓
TypeScript 渲染与交互层
        ↓
wasm-bindgen 生成的接口
        ↓
Rust PDF 核心模块
        ↓
pdfium-render
        ↓
PDFium 引擎

项目架构

复制代码
pdf-project/
├── rust-pdf/                       # Rust PDF 核心与 WASM 接口
│   ├── src/
│   │   ├── lib.rs                 # WASM 对外接口入口
│   │   ├── document.rs            # PDF 文档加载、信息读取与生命周期管理
│   │   ├── page.rs                # PDF 页面相关操作
│   │   ├── renderer.rs            # 页面渲染与像素数据生成
│   │   ├── text.rs                # 文本提取与全文搜索
│   │   ├── annotation.rs          # 高亮、下划线等批注管理
│   │   └── error.rs               # 错误类型与异常转换
│   ├── Cargo.toml                 # Rust 包、依赖及编译配置
│   └── 使用.md                    # Rust 模块使用说明
│
├── vue3-pdf-viewer/               # Vue 3 PDF 阅读器
│   ├── src/
│   │   ├── components/
│   │   │   └── PdfViewer.vue      # PDF 阅读器核心界面
│   │   ├── main.ts                # Vue 应用入口
│   │   ├── App.vue                # 根组件
│   │   ├── wasm.ts                # Rust WASM 初始化与接口封装
│   │   ├── renderer.ts            # 前端 PDF 渲染流程
│   │   ├── canvas.ts              # Canvas 绘制与操作
│   │   ├── annotation.ts          # 前端批注交互
│   │   ├── worker.ts              # Web Worker 后台处理
│   │   └── env.d.ts               # TypeScript 环境声明
│   ├── public/
│   │   ├── pkg/                   # Rust 生成的 WASM JS 绑定
│   │   ├── pdfium.js              # PDFium JavaScript 加载器
│   │   └── pdfium.wasm            # PDFium WebAssembly 模块
│   ├── index.html                 # HTML 入口
│   ├── package.json               # 前端依赖及脚本
│   ├── tsconfig.json              # TypeScript 配置
│   └── vite.config.ts             # Vite 构建配置
│
├── README.md                      # 项目介绍、接口和构建说明
└── 需求文档.md                    # 项目需求与功能规划
相关推荐
码小猿的CPP工坊29 分钟前
C++跨平台开发之基于wxWidgets开发GUI程序简介-002
开发语言·c++
波力海苔夹心脆67531 分钟前
C# 固高 GTS 运动控制卡入门:伺服上下电、Jog 点动与二维插补(WinForms 实战)
服务器·开发语言·c#·运动控制·伺服电机·winforms·固高
海绵宝宝转agent37 分钟前
LeetCode100个人题解+java面经总结
java·开发语言·笔记·学习·算法
chenbingjie_c39 分钟前
C++ 继承全解析(从三种继承方式到菱形继承与内存布局)
开发语言·c++
学逆向的9 小时前
C 堆区内存管理
c语言·开发语言·网络安全
huoyueyi9 小时前
《融天AI-APP从0到1开发实录》
开发语言·lua
OpenAnolis小助手11 小时前
PHP 两个严重漏洞曝光,龙蜥社区 24 小时完成 3 版本修复
开发语言·操作系统·php·龙蜥社区
阿尼卡~11 小时前
VS Code 配置 C 语言开发环境(Windows 10/11):从 GCC 安装到运行、断点调试,一篇搞定
c语言·开发语言·windows
hhhjhl13 小时前
Undici 跨端三方库仓颉适配全流程
java·开发语言·ubuntu