首页 > 其他分享 >使用puppeteer url转换pdf中文不显示

使用puppeteer url转换pdf中文不显示

时间:2024-05-17 22:51:33浏览次数:25  
标签:wqy zenhei url puppeteer apk && 镜像 pdf 文泉

本来正在优化一个 url 转 pdf 的 node 服务,项目是使用 puppeteer 进行转换。功能优化提测后,发现转换后的 pdf 中文都不显示了。而本身这次优化没有涉及到转换本身相关的内容,这就很奇怪,而且本地转换都很正常。

一般中文不显示,很可能是缺少中文字体导致的,于是看了项目中的 Dockerfile 确实安装了字体,还特别进行了注释,说明这个问题之前应该考虑过。

RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories \
    && echo "https://mirrors.aliyun.com/alpine/v3.12/main/" >> /etc/apk/repositories \
    && echo "https://mirrors.aliyun.com/alpine/v3.12/community/" >> /etc/apk/repositories \
    && echo "https://mirrors.aliyun.com/alpine/edge/testing/" >> /etc/apk/repositories \
    && apk update && apk upgrade && apk add --no-cache \
    chromium \
    nss \
    freetype \
    freetype-dev \
    harfbuzz \
    ca-certificates \
    ttf-freefont \
    wqy-zenhei@edge -f

看来大概率是本次代码修改导致的,于是将代码回滚到上一个版本,结果是中文仍然不显示。代码回滚也没能修复,从这看起来好像问题又不在代码层。

接下来,只能对比下线上镜像和测试环境镜像有什么区别了,于是用生产镜像替换测试环境的镜像,结果转换后的 pdf 中文都恢复显示了。在 pod 内执行 fc-list :lang=zh 命令发现,果然生产环境的镜像中包含中文字体,而现在打的镜像中没有该字体。

# fc-list :lang=zh
/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc: WenQuanYi Zen Hei Sharp,文泉驛點陣正黑,文泉驿点阵正黑:style=Regular
/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc: WenQuanYi Zen Hei Mono,文泉驛等寬正黑,文泉驿等宽正黑:style=Regular
/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc: WenQuanYi Zen Hei,文泉驛正黑,文泉驿正黑:style=Regular

到这里,问题就比较清晰了,肯定时构建镜像时安装wqy-zenhei字体失败了,但是为什么会失败呢。经过一番搜索,终于在 https://gitlab.alpinelinux.org/alpine/aports/-/issues/15509 中找到了答案。

原因是构建镜像 Dockerfile 中指定了第三方依赖镜像仓库,而字体  wqy-zenhei 从 v3.19 从  edge/testing 移到了  community(时间在 2023 年 11 月),原先的仓库该字体已无法下载。见: https://mirrors.aliyun.com/alpine/v3.19/

于是在安装字体时重新指定第三方依赖仓库就可以了。不过这个留的坑挺危险的,依赖的第三方依赖还是尽量用稳定的版本。

RUN echo "https://mirrors.aliyun.com/alpine/v3.19/community/" > /etc/apk/repositories \
    && apk add --no-cache wqy-zenhei

标签:wqy,zenhei,url,puppeteer,apk,&&,镜像,pdf,文泉
From: https://www.cnblogs.com/hans-hu/p/18198845

相关文章

  • 如何将Excel转PDF?3种免费方法很实用
    将Excel表格转换为PDF是一种非常常见的需求,因为PDF格式能够保持文档的原始排版和样式,并且可以方便地与他人共享。那么有哪些免费方法可以将excel转pdf呢?方法一:使用Excel的内置功能很多office都可以使用内置的PDF转换功能来实现,并且可以保留原始格式和样式。1、打开要转换的Exce......
  • Uri.EscapeDataString 和 Server.UrlEncoding 的区别
    今天在iis中访问一个即含有空格又含有#的文件名时,通过iis直接访问都无法到达,显示404,即便是urlencode文件名后依然无济于事,最后通过gpt问到了答案。Uri.EscapeDataString和Server.UrlEncode是.NETFramework中用于URL编码的两个方法,它们有以下区别:命名空间和所属类:Uri.Es......
  • 手机怎么把pdf文件转成excel表格
    在大数据的时代,用数据来指导分析已越来越普遍。有时候希望使用pdf文件中的表格数据,但是pdf文件无法直接编辑,复制和粘贴是很麻烦的。尤其是当分析一些数据时,需要将pdf转excel表格,那么你知道手机怎么实现pdf文件转excel表格吗?使用在线转换工具是最简单、最快捷的方式之一。它不仅不......
  • java PDF转换图片(多张pdf转换成一整张图片)
    引入pdf操作相关pom <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.21</version></dependency>具体代码@RequestMappin......
  • mpdf增加字体并进行使用
     1、先将字体复制到目录:\vendor\mpdf\mpdf\ttfonts2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,对照已经添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字体进行增加即可。3、再在需要设置字体的文字加上font-family:fangzhenweibei;样式即可。  ......
  • 【专题】2024年中国即时配送行业研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=36188原文出处:拓端数据部落公众号即时配送服务凭借其无与伦比的高效与便捷,已深深满足了当代社会对于速度和便捷性的双重追求。据权威报告揭示,即时配送行业规模已突破3400亿元,且预测至2028年,这一数值将飙升至超过8100亿元。阅读原文,获取专题报告合......
  • 【专题】2023年中国白酒行业消费白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34188原文出处:拓端数据部落公众号2023年中国白酒行业消费白皮书报告合集,总结了消费市场的两大传承和五大进化,以帮助白酒企业更好地理解消费者心理和供需变化,从而把握增长机会。两大传承包括争夺消费者的“第一口酒”以及品牌在消费决策中的关键作......
  • wkhtmltopdf.exe HTML转PDF
    wkhtmltopdf.exe下载地址https://wkhtmltopdf.org/ wkhtmltopdf.exe--enable-local-file-access --encoding"UTF-8"--footer-htmlfooter.html file.htmlfile.pdf               可访问本地图文         编码   ......
  • url并发请求
    functionbatchRequest(urls,maxNum){returnnewPromise(resolve=>{if(urls.length===0){resolve([]);return;}constresults=[];letindex=0;letfinishCount=0;asyncfunction......
  • 上百页html生成pdf解决方案(bookjs-easy)简洁完整版(包含接收服务端返回路径参数)
    依靠1:客户端插件 bookjs-easy(点击直接跳转官网)2:服务端插件screenshot-api-server实测105页的pdf,生成耗时40s左右,文件大小16MB项目需求:生成一个上百页的pdf,这个pdf包含表格、折线图、图片等,且横竖幅页面交叉 bookjs-easy官网的文档对于第一次看的人来说并不友好(建议第......