单片机生成PDF文件(STM32+LIBHARU)

2023-11-19

 之前发过一个帖子,是STM32移植了一个pdf库

不过那个库功能比较简单,有很多东西都没有,比如加载图片和文件加密

这次主要是为了文件加密

翻阅了一下资料,单片机做PDF文件,网上资料不是很多,可以说基本上找不着,github上翻源码,翻了几次都是我的代码

目前两个比较好的PDF C语言库,一个是pdflib,个人用是免费的,商用得花钱,1000欧元,一个是libharu,开源免费

很明显,我不是个有钱人,直接选libharu

1.获取libharu源文件

libHaru

点击链接下载

目前是2.3版本  

2.在Ubuntu上试用

 这个就不重点说了,反正装个cmake,然后build就行了。具体步骤百度一下吧,几分钟的事情,代码没毛病,不会报错

3.在单片机上移植

目前选用的平台是STM32F407Z+SD卡

 把lib库放到源码内,另外需要一个内存管理的文件,取代linux中的memory.h,这个自己百度搜一下,怎么在RAM里面实现内存管理

把所有的文件加入工程

 添加头文件

 修改配置文件

别问,直接全部#undef,反正单片机没有这玩意

其中有两个要打开

搞完之后编译,会报几个time.h和memory.h找不到的问题,自己处理一下,屏蔽相关代码就好了

直至编译通过

 

 自己的工程,首先要实现fatfs的功能,我是实现了fatfs和U盘的功能,一个意思

为libharu修改接口

 反正不管上层什么逻辑,底层肯定是操作文件系统,把这几个函数实现出来,都是fatfs里面现有的东西

 到demo里面,随便搞几个测试代码出来

我试了下加密文件

 

这里最关心的应该是占用的资源

 RAM里面有30K是我开放给这个库的

也就是说需要一个64K RAM,256K ROM以上的单片机才行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机生成PDF文件(STM32+LIBHARU) 的相关文章

  • 【QTUM量子链中国区】零撸180元攻略

    QTUM量子链中国区 于2020年1月7日正式上线 实名认证 无需上传 通过后赠送体验矿机一台 周期30天 总产量10QTUM 价值130元 进入官方QQ群可以目测到 这个新出的项目非常火爆 问题是 QTUM量子链中国区和著名的QTUM量子

随机推荐

  • ABAP 参照TR创建副本TR并释放

    简介 一般项目中为了后期传输的统一性 都会采用传输副本请求的方式来避免出现一个需求有过多的工作台TR的情况 但是常规的创建副本请求的方式不是很便捷 因此本文介绍一种参照已有TR创建副本TR的样例 效果 代码 Report YSTMS
  • Ljavax/validation/ParameterNameProvider

    利用宝塔部署项目war包出现 Ljavax validation ParameterNameProvider 的错误 初始化org springframework validation beanvalidation OptionalVali
  • day08-Linux自有服务&软件包管理

    自有服务 即不需要用户独立去安装的软件的服务 而是当系统安装好之后就可以直接使用的服务 内置 学习目标 1 了解systemctl命令用途 2 掌握使用systemctl开启 关闭 重启服务 3 了解常见自有服务ntpd firewalld
  • Linux基础学习

    安装gcc 1 apt get命令是debain Linux发新版的APT软件包管理工具 dabian ubuntu deepin等Linux系统通过以下命令 安装gcc Shell输入sudo apt get install gcc命令
  • 4--一元多项式的乘法与加法运算

    个人题解 include
  • JS判断数组中是否有重复的元素

    function isRepeatId arr arr 100 200 400 200 if arr length 1 若元素数为1一定不重复 直接返回 return false var hash for let i in arr 遍历ar
  • C语言的面向对象的封装方法

    1 3 1 变长结构体的实现 以上文数据结构C语言 双向链表及其实现的双向环链为例 具体封装方法如下 在上述双向环链中节点中不可避免地引入了数据指针 void data占用了8byte的空间 那么能不能在链表每个节点中省去这8byte的空间
  • 自下而上分析方法-算符优先,LR(0),SLR,LR(1),LALR大全

    文章目录 自下而上分析法 一 规范规约 相关定义 短语 直接短语 句柄 素短语 最左素短语 语法树表示 示例 规范规约 二 语法分析器 三 算符优先分析算法 算符文法 1 算符优先文法 2 FIRSTVT P 和LASTVT P 1 FIR
  • 金晟富:5.24黄金原油最新行情涨跌分析,黄金原油操作建议

    前言导读 新的一天 新的开始 新的机会 投资路并非坦途 我的文字不华丽 但是却很真诚 财富自由首先是脑袋的距离 然后才是口袋的距离 出现亏损应当去寻找原因 去改变目标处境 不然将会陷入恶性循环 不断的亏损 不断的找理由 赚钱的单拿不住 亏钱
  • docker official tutorial, unable to build images.docker官方教程无法生成镜像

    windows docker 根据dockder的官方tutorial教程 docker build t getting started 这一步无法成功 一直是如下报错 21 53 error An unexpected error occ
  • element-plus 关于按需加载的问题

    完整的引入没什么说的 import createApp from vue import ElementPlus from element plus import element plus lib theme chalk index css
  • 用Python调用OpenAI API做有趣的事

    GPT 迭代过程概要表 版本 发布时间 训练方案 参数量 是否开放接口 GPT GPT 1 2018 年 6 月 无监督学习 1 17 亿 是 GPT 2 2019 年 2 月 多任务学习 15 亿 是 GPT 3 2020 年 5 月 海
  • 数据库2:创建表(头歌云课)

    任务描述 相关知识 如何在指定数据库中创建表 编程要求 测试说明 任务描述 本关任务 在数据库中 创建一个表 相关知识 我们知道数据库就是存储数据的地方 那数据库中的数据到底存放在哪里呢 数据库中的数据是存放在数据库中的一张一张表 你可以想
  • 机器学习数据分析软件:Octave

    最近学习了Octave数学软件 这个软件类似于MATLAB 但是操作要比MATLAB简单很多 上手快 对数据分析有很大的帮助 所以这里就简单的把部分练习的代码放在这里 如果你想实现一下 可以按照代码内容来 或者自己编写 GNU Octave
  • sql注入靶场1-65

    第一关 单引号闭合 order by 判断字段数 显示位2 3 输出数据库版本 id 1 union select 1 2 version 输出数据库名称 id 1 union select 1 2 database 查看所有表名 id 1
  • torch.onnx.export():将pytorch模型转换为.onnx模型

    torch onnx export model args f export params True verbose False training False input names None output names None aten F
  • webpack 的externals配置

    官网解释 webpack 中的 externals 配置提供了不从 bundle 中引用依赖的方式 解决的是 所创建的 bundle 依赖于那些存在于用户环境 consumer environment 中的依赖 怎么理解呢 意思是如果需要引
  • Linux FTP服务

    目录 一 FTP概述 1 Standard模式 主动模式 2 Passice模式 被动模式 二 搭建和配置FTP服务 1 实验环境 2 软件安装 3 设置匿名用户访问FTP服务 4 开启服务 关闭防火墙和增强型安全功能 5 匿名访问测试 1
  • Spring Data JPA中常用的注解详解

    我们先看看类前面的两个注解 Entity 对实体注释 任何Hibernate映射对象都要有这个注释 Table name 自定义的表名 完成表和实体之间的映射 跟上面的注解默认需要配置的 Id 把这个类里面所在的变量设置为主键Id Gene
  • 单片机生成PDF文件(STM32+LIBHARU)

    之前发过一个帖子 是STM32移植了一个pdf库 不过那个库功能比较简单 有很多东西都没有 比如加载图片和文件加密 这次主要是为了文件加密 翻阅了一下资料 单片机做PDF文件 网上资料不是很多 可以说基本上找不着 github上翻源码 翻了