PdfSharp 对中文字体显示乱码的问题

文章目录

PdfSharp 对中文字体显示乱码

在使用微软雅黑或者宋体等一些常见的字体时,PdfSharp对中文字体也会显示乱码,那到底应该如何解决呢?或者说PdfSharp支持哪些字体?

PdfSharp是否支持中日韩文?

在官网对此有回应,PdfSharp是不支持的。具体描述如下,不支持指的是 翻译如下:

PDFsharp 1.50还没有。目前还不支持从右向左的语言。只支持简单的语言,如英语或德语,字符和字形之间具有简单的一对一关系。
"不支持"需要一些解释。
如果您将字符串反转并将所有段落设置为左对齐,那么希伯来语似乎可以工作。
将显示日语字符,但从左到右,而不是从上到下。我们看不懂日文,也无法确认日文是否正确显示。确保选择包含日文字符的字体。
阿拉伯字符有不同的形状(字形),这取决于它们的位置(开始、结束、中间、孤立)。PDFsharp不支持选择正确的字形。如果您将字符串反转,并且确保为开始、结束、中间或独立显示选择正确的Unicode字符,则阿拉伯文本可以工作。确保您选择了包含阿拉伯字符的字体。

PDFsharp支持的字体

TrueType字体和带有TrueType轮廓的OpenType字体才能与PDFsharp一起使用

PDFsharp不能使用PostScript字体在PDF文件中绘制文本。只有TrueType字体和带有TrueType轮廓的OpenType字体才能与PDFsharp一起使用。
PDFsharp可以打开和操作包含PostScript字体的现有PDF文档。该限制仅适用于使用PDFsharp创建的文本。

当然,该文章后续还介绍了如何将PostScript转换为TrueType字体,以供PDFsharp使用。

对PDFsharp扩展支持字体的方法

方法1: 对PDFsharp的源码进行修改,使其支持对TTC字体文件的支持。这是一位泰国大佬的修改。https://forum.pdfsharp.net/viewtopic.php?p=9039#p9039

方法2: 找到有中文字符的TTF文件适用于PDFsharp ,标楷体https://forum.pdfsharp.net/viewtopic.php?p=11874#p11874

方法3: PdfSharp对中文字体支持及排版格式的调整,通过输入的字体名称检测能否在PdfSharp上正常使用,也涉及源代码的更改。

PdfSharp支持的中文字体有

在Windows 10 家庭中文版 系统上测试运行,可以支持的中文字体有:

华文隶书, 华文宋体, 华文细黑, 华文新魏, 华文行楷, 华文中宋, 华文彩云, 华文仿宋, 华文琥珀
楷体, 隶书, 幼圆, 等线, 方正姚体, 仿宋, 黑体

英文字体有:

Times New Roman, Verdana, Arial, Arial Black, Bahnschrift, Consolas,
Corbel, Corbel Light, Cooper Black, Calibri, Candara Light, CoPPERPLATE GoTHIC BOLD
Microsoft New Tai Lue, Microsoft PhagsPa, Microsoft Sans Serif

当然上面列举的中文也在内,还有一些字体也支持并未全部列举出来。

PdfSharp 源码链接

PdfSharp 官网:https://www.pdfsharp.net/

PdfSharp 1.5.0版本 在github上的源码:https://github.com/empira/PDFsharp-1.5

PdfSharp 1.5版本 在sourceforge上的源码
https://sourceforge.net/projects/pdfsharp/files/pdfsharp/

最新的PdfSharp版本是6.0,基于.NET6.0的框架,可以在Windows,Linux,或其它任何平台下进行编译。

相关推荐
翔云 OCR API10 小时前
发票查验接口详细接收参数说明-C#语言集成完整示例-API高效财税管理方案
开发语言·c#
虫小宝11 小时前
高佣金的返利平台性能压测:从单接口到全链路的性能瓶颈分析
c#·linq
故事不长丨12 小时前
C#集合:解锁高效数据管理的秘密武器
开发语言·windows·c#·wpf·集合·winfrom·字典
jghhh0114 小时前
基于C#实现与三菱FX系列PLC串口通信
开发语言·算法·c#·信息与通信
故事不长丨14 小时前
C#队列深度剖析:解锁高效编程的FIFO密码
visualstudio·c#·wpf·多线程·winfrom·队列·queue
bugcome_com14 小时前
C# 反射(Reflection)超全解析
c#
bjzhang7517 小时前
Dorisoy.AMS--一款采用C# WinForm框架+SQLite数据库的企业/机构资产管理解决方案
sqlite·c#·资产管理
零度@18 小时前
Java消息中间件-Kafka全解(2026精简版)
java·kafka·c#·linq
2501_9418824818 小时前
在开普敦跨区域部署环境中构建高可靠分布式配置中心的设计思路与实现实践
开发语言·c#
zxy284722530119 小时前
利用C#的BotSharp本地部署第一个大模型AI Agent示例(1)
人工智能·c#·对话·ai agent·botsharp