一菜菜一群

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

背景:

 项目使用的是 .Net 6 + Docker,需要将数据生成 PDF 保存到 第三方文件存储服务器上。

引用 NuGet: Haukcode.WkHtmlToPdfDotNet

    这个插件还是满好用的,支持Windows、Docker. 可以直接通过 Url 转PDF,也可以通过 Html 字符,生成 PDF.

官方地址: https://github.com/HakanL/WkHtmlToPdf-DotNet

 

由于官方只有 debian 版本的帮助说明,所以项目端也使用了 debian 系统。

按照官方的说明文档进行开发,一切都很顺利。在最后一步,突然发现生成的 PDF 如果涉及到中文,就会变成 □□□□□。

经过查阅资料,基本都是字体原因。具体做法可以参考如下:

1:从 windows 电脑上找到相应的字体(C:\Windows\Fonts),这里需要注意,要使用 ttf 类型的字体,ttc 可能会不起作用(Linux 不识别),ttc类型的字体可以通过在线工具,分解成数个 ttf 类型的字体。

 

2:将字体文件拷贝到项目里,我这这里选择了等线体,也可以选择宋体

 

3:在 Dockerfile 通过 mv命令,将字体复制到对应的文件夹

 

RUN mkdir /usr/share/fonts/truetype/deng/
RUN mv /app/Deng.ttf /usr/share/fonts/truetype/deng
RUN fc-cache -vf

 这样处理下,中文变方块的问题就解决了。

 

后续:

这玩意有内存溢出的问题,还是用不了(itext 遵循 AGPL 协议,需要开源或者收费)。最终换这个了 Wkhtmltopdf.NetCore。

 

posted on 2023-08-08 17:59  菜鸟也是bird  阅读(207)  评论(0编辑  收藏  举报