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

    ***

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

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

  • 相关阅读:
    Flask基础
    Scrapy框架(持久化,去重,深度控制,cookie)
    scrapy框架 简易整理
    BeautifulSoup 模块
    requests模块
    复习第三天
    在Django中使用原生Sql
    ajax跨域简单请求和复杂请求
    复习第二天
    IOS
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7731614.html
Copyright © 2011-2022 走看看