PDF 的开源库,大多是Java,或C#的,但C++也有一个很不错的PDF开源库:PoDoFo

我司的PDF签章产品中,我就是用这个PoDoFo库来做的底层

但是国外开源库对中文支持都是或多或少有点问题的,这不,今天发现签名annotation中要是写中文就成乱码了

如果你也做PDF的开发,不妨看看下面的内容

一。PODOFO库也是源于linux中开发而来

我们的签章产品是Windows下的,所以,我把这个开源以及依赖库都搬到Windows上来了,但是,依赖众多和库本身也问题不少,我在此不再详细介绍了

二。中文支持-相关方面

1 要向PDF中写文字信息,要有几个类涉入

  1.1 PdfFont

   1.2 PdfPainter

   1.3 PdfEncodingFactory

2 支持中文的编码器只有PdfEncodingFactory::GlobalIdentityEncodingInstance();

3 创建字体时要设置字体的编码器(中文编码器)

  const PdfEncoding* pp = PdfEncodingFactory::GlobalIdentityEncodingInstance();
  PoDoFo::PdfFont *font = document.CreateFont(pszFontName, false, false, false, pp);

4 PdfPainter中设置字体和字体颜色

  painter.SetFont(font);
  painter.SetColor(r, g, b);

5 要使用的中文信息,使用前要转码成UTF8格式才能正确写入

  PdfString pdfstr((pdf_utf8*)siText);
  painter.DrawMultiLineText(fImageLeft, fImageTop, fImageWidth, fImageHeight, pdfstr);

Finally:

如果你用好了,不出意外的话,你应该已经在PDF文档里写入自己的中文信息了

***

因为是商业项目,我不便更详细讨论这个话题

祝各位有需要的朋友们好运

podofo 一点小分享的更多相关文章

  1. 关于win8开发的一点小总结

    我今天做画面的时候,发现了一点小问题. 我在xmal文件里面加了一个CheckBox控件,设置IsChecked属性为True,并添加了Checked事件.Checked事件里面有对另外一个TextB ...

  2. 关于PHP魔术方法__call的一点小发现

    好久没有上博客园写文章了,今晚终于有点空了,就来写一下昨天的一点小发现. 我自己所知,C++,Java的面向对象都有多态的特点,而PHP没有,但PHP可以通过继承链方法的重写来实现多态的属性.而魔术方 ...

  3. net core体系-web应用程序-4net core2.0大白话带你入门-8asp.net core 内置DI容器(DependencyInjection,控制翻转)的一点小理解

    asp.net core 内置DI容器的一点小理解   DI容器本质上是一个工厂,负责提供向它请求的类型的实例. .net core内置了一个轻量级的DI容器,方便开发人员面向接口编程和依赖倒置(IO ...

  4. C与C++在形參的一点小差别

    先看一下以下的代码: int fun(a,b) int a; int b; { return 10; } void main(int argc, char ** argv) { fun(10); re ...

  5. BUI Webapp用于项目中的一点小心得

    接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...

  6. linux目录太长怎么办?分享一点小技巧

    在linux使用cd的时候,可能会遇到目录比较深的时候,这个时候总是cd一个很长的目录会很麻烦,那有没有什么比较方便的方法呢? 若是在两个目录中来回切换,这个时候可以使用cd - 这个命令,可以完成在 ...

  7. 【Django】有关多用户管理的一点小经验分享

    前言 最近,笔者因为需要开发一个系统作为毕设的展示,因此就产生了有关多用户管理的问题.在这里我把自己的需求重新阐明一下:能够通过Django自带的用户管理框架,实现多用户的管理,例如登录.登出.ses ...

  8. 刚接触SkyLine的一点小收获与感触

    因为刚接触Skyline不到一个星期,也怕把学习到的忘记掉,所以写一点学习到的一些皮毛的东西,赶紧记录一下,怕回头忘记 1.网上关于web端的开发非常多,也有很多牛人分享自己的经验,所以学习起来也相对 ...

  9. @RequestParam,@RequestBody,@ResponseBody,@PathVariable注解的一点小总结

    一.前提知识: http协议规定一次请求对应一次响应,根据不同的请求方式,请求的内容会有所不同: 发送GET请求是没有请求体的,参数会直接拼接保留到url后一并发送: 而POST请求是带有请求体的,带 ...

随机推荐

  1. 线段树 || BZOJ 1112: [POI2008]砖块Klo

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1112 题解: 希望有连续K柱的高度是一样的,就先把1~K的数扔进线段树(线段树的下标就是数值 ...

  2. HDU 6228 - Tree - [DFS]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6228 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  3. [No0000125]WCF安全体系

    WCF的安全体系主要包括三个方面:传输安全(Transfer Security).授权或者访问控制(Authorization OR Access Control)以及审核(Auditing).而传输 ...

  4. Zabbix unreachable poller processes more than 75% busy

    “Zabbix poller processes more than 75% busy”警报问题解决 虽然Zabbix的监控警报各种有,碰到最多的几个莫过于内存耗尽,网络不通,IO太慢还有这个“Zab ...

  5. ASP.NET MVC 母版页

    为什么使用母版页?为了整个站点样式统一,任何WEB应用程序都应该使用母版页.MVC框架中,有新的方式为母版页传递数据.       一个WEB应用程序可以包含多个母版页,母版页用于定义页面布局,它与普 ...

  6. xss 学习记录

    反射型和持久型 一些简单的xss例子: <script>alert(/xss/)</script> 嵌入到textarea的,需要先关闭textarea标签 </text ...

  7. 业界微服务楷模Netflix是这样构建微服务技术架构的

    1. 如不考虑组织架构,直接切入技术架构(很多架构师的通病),则失败风险巨大. https://mp.weixin.qq.com/s/C8Rdz9wFtrBKfxPRzf0OBQ

  8. mac mysql提示mysql.sock'

    Warning: World-writable config file '/Applications/XAMPP/xamppfiles/etc/my.cnf' is ignored ERROR 200 ...

  9. 深入hash

    hash真的很好用,这些杂一点的知识点我觉得还是很有必要的,对还有离散化. 1<=N<=1,000,000,其它所有数据都在[0...1,000,000,000]范围内 看起来很简单一道水 ...

  10. python循环字符转换

    pyhon函数传参的时候穿的是引用,而不是实际值,这样可以节省内存 变量名要求:最好是以字母下划线作为变量名,不能和py关键字重复 import getpass提供了平台无关的在命令行下输入密码的方法 ...