首页 > 其他分享 >Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--创建字符子集

Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--创建字符子集

时间:2024-01-29 18:13:21浏览次数:31  
标签:-- Pdfium Free fontPath var new Net

项目地址:

Pdfium.Net:https://github.com/1000374/Pdfium.Net

PdfiumViewer:https://github.com/1000374/PdfiumViewer

Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--加载字体 草稿

接上篇,怎么创建字符子集呢?获取字符集内的字形符号需要引用wpf下PresentationCore.dll,根据比对传入字符和字符集中的字形获取对应的字形字节,从而生成新的字符集,

如需要生成ttf文件,则直接byte[]保存成ttf即可

  /// <summary>
  /// create SubCharacterSet
  /// </summary>
  /// <param name="fontPath">font path</param>
  /// <param name="sourceText"></param>
  /// <returns></returns>
  public static byte[] CreateSubSet(this string fontPath, string sourceText)
  {
      if (!File.Exists(fontPath))
          throw new ArgumentException($"{fontPath} not find");
      var glyphTypeface = new GlyphTypeface(new Uri(fontPath, UriKind.RelativeOrAbsolute));
      var Index = new List<ushort>();
      var sourceTextBytes = Encoding.Unicode.GetBytes(sourceText);
      var sourceTextChars = Encoding.Unicode.GetChars(sourceTextBytes);
      for (var charPos = 0; charPos <= (sourceTextChars.Length - 1); charPos++)
      {
          var sourceTextCharVal = (int)sourceTextChars[charPos];
          var glyphIndex = glyphTypeface.CharacterToGlyphMap[sourceTextCharVal];
          if (!Index.Contains(glyphIndex))
              Index.Add(glyphIndex);
      }
      return glyphTypeface.ComputeSubset(Index);
  }

  

 

标签:--,Pdfium,Free,fontPath,var,new,Net
From: https://www.cnblogs.com/xiaohemiao/p/17994849

相关文章

  • pycharm新建文档自动显示编码格式和作者信息等信息
    1.设置方法setting--editor--fileandcodetemplates--选择pythonscript--输入信息模版--apply2.信息模版--coding:utf-8--"""Author:wrTime:${DATE}${TIME}File:${NAME}.pySoftware:${PRODUCT_NAME}"""从上到下依次是:作者:时间:文件名:ide名称:还......
  • 【教程】iOS如何抓取HTTP和HTTPS数据包经验分享
    ......
  • 杨老师的照相排列
    蓝书上的那个补全数组思想其实是当然这个问题完全可以拓展到状态压缩中间那一串是乘法的意思(然而我也不太清楚跟状态压缩有啥关系)状态压缩具体内容见状态压缩的专题......
  • 挑战自己,突破极限
    挑战自己,突破极限,是一个人不断成长和进步的重要途径,也是实现个人价值的关键途径。只有通过挑战自己,突破自己的极限,才能不断向前,不断创造更加出色的成就。在本文中,我们将讨论如何挑战自己,突破自己的极限,成为一个更加出色的人。一、认识挑战自己的重要性1.促进个人成长挑......
  • 多项式
    很多证明需要用到积分知识,所以只有结论和代码一、多项式求导$F'(x)=\sum_{i=0}a_{i+1}\times(i+1)x$点击查看代码inlinevoiddao(int*g,int*f){for(inti=0;i<n;++i)g[i]=f[i+1]*(i+1)%mod;}二、多项式求积分求导逆运算$F'(x)=\sum_{i=1}a_{i-1}\times\fr......
  • 12种相关系数汇总!
    所谓相关关系是指2个或2个以上变量取值之间在某种意义下所存在的规律,其目的在于探索数据集所存在隐藏的关系网,在19世纪80年代,Galton通过研究人类身高遗传问题首次提出了相关的概念,文中指出相关关系可以定义为:一个变量变化时,另一个变量或多或少的相应的变量。这种相关关系的统计量......
  • MySQL迁移人大金仓kingbase
    前言:前段时间接到一个任务,说是数据库要由mysql改成人大金仓,项目代码也需要修改适配(另一个同事负责),而我则是负责数据库的迁移工作,期限是七天(2024-01-26已上线),在这之前我甚至都没听过人大金仓这个名词,而且也没有相关文档的交接更没有技术人员支撑,起初我还让项目负责人去跟集团的DBA......
  • 「效果图渲染」怎么用VRay渲染逼真的物理模型
    使用V-Ray渲染出逼真的物理模型首先要注重材质和光照的真实性。精细调整材质属性,如反射、透明度和质感,确保它们与现实世界中物质的特性相一致。接下来,布置合适的光源,模拟自然光线的行为,创建真实的光影效果。通过这两个基本步骤,即可开始打造高度逼真的三维渲染作品。VRay渲染室内......
  • 常用的rddTransformation算子
    根据文章:暑假生活每周总结10  frompysparkimportSparkContext#创建SparkContext对象sc=SparkContext("local","RDDTransformationsExample")#假设我们有一个RDD数据源data=sc.parallelize([1,2,3,4,5])#1.map算子mapped_data=data.map(lambda......
  • 小白都会的幻兽帕鲁服务器搭建教程(详细图文)
    简介:由于幻兽帕鲁游戏的火爆,导致其官方服务器频现游戏卡顿掉线,为了能够正常流畅的体验幻兽帕鲁,有不少人都搭建了幻兽帕鲁服务器(私服),网上虽然也有很多幻兽帕鲁服务器搭建教程,但内容专业性有点高,比较适合有技术基础的玩家,对于小白或者第一次搭建游戏私服的用户而言,理解起来还是......