zoukankan      html  css  js  c++  java
  • podofo 一点小分享

    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文档里写入自己的中文信息了

    ***

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

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

  • 相关阅读:
    Paxos算法简单陈述
    二段式提交和三段式提交
    Guava包学习--Hash
    JedisPool无法获得资源问题
    有料面试题之--Object里面的方法
    Spring常用jar包的功能
    线上日志分析与其他一些脚本
    Flutter-漸變色按鈕
    Flutter-自定義圖標或者選擇框
    Flutter-自定義圖片圖標
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7731614.html
Copyright © 2011-2022 走看看