首页 > 其他分享 >Docker(.Net6) 环境下使用 Haukcode.WkHtmlToPdfDotNet

Docker(.Net6) 环境下使用 Haukcode.WkHtmlToPdfDotNet

时间:2023-08-08 18:13:00浏览次数:36  
标签:Haukcode WkHtmlToPdfDotNet 字体 PDF Net6 Docker ttf

 

背景:

 项目使用的是 .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

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

 

标签:Haukcode,WkHtmlToPdfDotNet,字体,PDF,Net6,Docker,ttf
From: https://www.cnblogs.com/yuanyang/p/17615062.html

相关文章

  • Asp.net Web Api .net6 Controller返回值总结
    1、特定的类型最基本的操作返回基元或复杂数据类型,例如, string 或自定义对象。请参考以下操作,该操作返回自定义 Product 对象的集合:[HttpGet]publicTask<List<Product>>Get()=>_productContext.Products.OrderBy(p=>p.Name).ToListAsync();2、返回IEnumer......
  • Asp.net Web Api .net6如何解决跨域的问题
    在Program.cs中添加如下代码//配置跨域builder.Services.AddCors(cor=>{varcors=builder.Configuration.GetSection("CorsUrls").GetChildren().Select(p=>p.Value);cor.AddPolicy("Cors",policy=>{policy.WithOrigins(c......
  • 【.NET6 + Vue3 + CentOS7.9 + Docker + Docker-Compose + SSL】个人博客前后端运维部
    个人博客前端:https://lujiesheng.cn个人博客后端:https://api.lujiesheng.cn个人博客运维:https://portainer.lujiesheng.cn1.服务器准备我采用的是腾讯云轻量应用服务器(2C4G8M80G),配置如下图:安装镜像选择CentOS7.664bit:2.服务器防火墙设置添加防火墙出入站规则......
  • NET6 Webapi 大驼峰传到前端变成了小驼峰
    JsonSerializerOptions.PropertyNamingPolicy属性services.AddControllers().AddJsonOptions(options=>{//获取或设置一个值,该值指定用于将对象的属性名称转换为其他格式(例如camel大小写)的策略;若为null,则保持属性名称不变......
  • .net6 项目升级到.net 7
    1、开发工具升级VisualStudio2022 https://www.cnblogs.com/lanrenka/p/17577938.html 2、将解决方案下的各个项目如VisualStudio2022下,右键项目-属性-修改目标框架后,保存 也可以直接修改.csproj文件,在VisualStudio2022双击项目即可打开。 3、各个项目引用的N......
  • .NET6中配置Hangfire定时任务
    1.安装Nuget包Hangfire.CoreHangfire.SqlServer          --sqlserver数据库SqlServer需要配置其中一个包Microsoft.Data.SqlClientsystem.data.sqlclient Hangfire.As......
  • .Net6实现定时任务
    首先创建一个类Background实现代码:usingMicrosoft.Extensions.Hosting;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceSmartMedicalCare.Web{publicclassBackground:IHostedService,......
  • NET6 EF Error: The certificate chain was issued by an authority that is not trus
    ErrorAconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringtheloginprocess.(provider:SSLProvider,error:0-Thecertificatechainwasissuedbyanauthoritythatisnottrusted.)解决方法:在DB连接字符串后面添加......
  • .Net6基于layui和ztree完成树形选择器添加和反填和修改
    以责任科室为例存储两个值ResponsibleDepartment和AoId,ResponsibleDepartment:是科室名称,AoId是科室Id添加:<divclass="layui-form-itemlayui-form-text"><labelclass="layui-form-label">责任科室</label><divclass="layui-inpu......
  • RDIFramework.NET CS敏捷开发框架 V6.0发布(支持.NET6+、Framework双引擎可选,全网唯一
    全新RDIFramework.NETV6.0CS敏捷开发框架发布,全网唯一支持.NET6+,Framework双引擎,降低开发成本,提高产品质量,提升用户体验与开发团队稳定性,做软件就选RDIFramework.NET敏捷开发框架。1、RDIFramework.NETCS敏捷开发框架介绍RDIFramework.NETC/S敏捷开发框架,是我司重磅推出......