在dataworks 中开发 pyodps作业使用 weasyprint 将html 转换成 PNG

devtools/2024/9/23 15:42:17/

背景

之前计算出每日top15存储量临时表,将表名存储量最后修改日期等关键信息通过 Markdown 的形式发送到企微群中,触达开发人员,使其及时清理以节省存储资源;但是 Markdown 格式看上去很乱,增加阅读成本,所以想将这些信息转换成PNG格式,使其看上去较为美观。

方案

通过查找资料发现有以下几个 Python 第三方包可以实现我的需求,分别是:html2pnghtml2imageweasyprint,对其一一进行尝试,结果如下:

html2png

因为我是在阿里云 dataworks 中开发的,这是一个托管环境,安装方式和本地不一样,需要通过独享调度资源组实现,安装好之后在pyodps基本中进行测试,但是一直报如下错误:
在这里插入图片描述
我开始以为没安装成功,但是在资源环境中确实发现了这个包,说明安装是没问题的:
在这里插入图片描述
然后我就询问阿里云客服,但是经过他们自己的测试人员尝试后问题还是无法解决,所以我就放弃了这个方案,转而去尝试 html2image

html2image

此包我在本地尝试成功,但是在dataworks中又出幺蛾子了,显示有个 json解析出了错误,具体原因为也没找到,尝试问阿里云客服,但是人家说这不是他们的问题,不包解决,hahaha,我将最后的希望放在了 weasyprint上。

weasyprint

安装好之后立马开始测试,虽然成功将内容转换成PNG并发送企微群,但是不显示中文:
在这里插入图片描述
报错信息如下:

home/tops/lib/python3.7/site-packages/weasyprint/fonts.py:229: UserWarning: FontConfig: No fonts configured. Expect ugly output. 'FontConfig: No fonts configured.

这个警告通常是因为 WeasyPrint 找不到可用的字体。查找资料并询问ChatGPT找到了一个最佳解决方案:

  • 1、下载 SimHei 字体文件,存储在阿里云 OSS 上;
  • 2、直接在 HTML 代码部分引用 字体文件 URL 即可。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照如上设置之后在此运行代码,PNG发送成功,结果如下:
在这里插入图片描述


http://www.ppmy.cn/devtools/116070.html

相关文章

MyBatis动态SQL中的`if`标签使用【后端 19】

MyBatis动态SQL中的if标签使用 引言 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。在 MyBatis 中,动态 SQL 是一个非常强大的特性,它允许你根据不同的条件来动态构建 SQL 语句。if 标签是动态 SQL 中最常用的一…

Spring Boot 入门面试五道题

在准备Spring Boot面试时,从简单到困难设计面试题可以帮助你系统地复习和评估自己的掌握程度。以下是五个不同难度的Spring Boot面试题: 1. 简单题:什么是Spring Boot?它主要解决了什么问题? 答案: Sprin…

[Python]一、Python基础编程(2)

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\1、人工智能开发入门\1、零基础Python编程 1. 文件操作 把⼀些内容 ( 数据 )存储存放起来,可以让程序下⼀次执⾏的时候直接使⽤,⽽不必重新制作⼀份,省时省⼒ 。 1.1 文件的基本操作 1. 打开文件 2. 读写操作 3. 关闭…

数据库 MySQL 是否需要容器化?

容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以…

STM32调试TIC12400笔记

工作中需要用到,但是有关这个芯片的参考资料好少,自己写一下调试过程,持续更新中,还没调完。 用的是正点原子的mini板,芯片是stm32f103RCT,需要知道spi的相关知识,先配置spi,用cube…

CentOS 中配置 OpenJDK以及多版本管理

以下是在 CentOS 中配置 OpenJDK 的步骤: 一、安装 OpenJDK 使用以下命令检查系统中是否已经安装了 Java: java -version如果已安装,会显示 Java 版本信息。如果未安装,则继续下一步。 使用 yum 安装 OpenJDK: yum ins…

10年计算机考研408-计算机网络

【题33】下列选项中,不属于网络体系结构所描述的内容是() A.网络的层次 B.每一层使用的协议 C.协议的内部实现细节 D.每一层必须完成的功能 解析: 本题考查的是网络体系结构相关的概念。 图1描述了网络的7层架构以及每一层所要完成…

UE5-俯视角色移动(蓝图)01

效果如下: 蓝图节点如下: 使用示例自带的移动蓝图,发现角色只能平移,不会转向。必须勾选以下选项: 点击蓝图-》组件-》SpringArm节点。在细节中找到摄像机设置,勾选以下: 在 点击蓝图-》组件-…