使用C++编辑导出pdf文件

  最近由于项目需要,需要用C++编辑Json数据为pdf并导出,记录一下学习过程。

c++ 第三方pdf库的选择

  网上找到的可用C++ pdf库有libharu和pdflib, 其中libharu是开源的,pdflib个人使用是免费的,商用的则需要授权。一开始我是用的libharu, 从网上下载源码,然后编译,编译过程发现,这个过程比较麻烦,且一直没有成功,于是换成了pdflib。 我比较推荐使用pdflib, 不用那么折腾,这里贴一下pdflib的官网 pdflib, 但是官网下载的pdflib导出的pdf会有水印,我在网上找到了没有水印的版本,文末分享给大家。

如何在VS2013中使用pdflib

  • 在VS2013中新建一个空项目,然后进入项目文件夹,新建include文件夹
  • 将pdflib.h、pdflib.hpp和cpp_wrapped.h拷贝到include中,将pdflib.lib和pdflib.dll直接拷贝到项目文件夹
  • 在项目属性中添加附加包含目录

使用C++编辑导出pdf文件

  • 在项目属性中添加附加依赖项 pdflib.lib

使用C++编辑导出pdf文件

 

 

添加中文支持

  从pdflib下载Cmaps, 我也会在文末的分享里加上Cmaps, 将下好的Cmap解压放到项目路径,在代码中加上

p.set_option(L"searchpath=../PDFlib-CMap-4.0/resource/cmap");

使用C++编辑导出pdf文件

测试代码

// testpdf.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>
#include "include/pdflib.h"
#include "include/pdflib.hpp"
using namespace std;
using namespace pdflib;

int main(void)
{
    try
    {
        PDFlib p;

        // 打开文档
        if (p.begin_document(L"test.pdf", L"") == -1) {
            wcerr << "Error: " << p.get_errmsg() << endl;
            return 2;
        }
        //配置cmap,用于支持中文字体
        p.set_option(L"searchpath=../PDFlib-CMap-4.0/resource/cmap");
        p.set_info(L"Creator", L"oneclick");
        p.set_info(L"Author", L"Thomas Merz");
        p.set_info(L"Title", L"test");

        p.begin_page_ext(a4_width, a4_height, L"");                    //设置pdf大小为A4

        //    设置中文字体并检查
        int font = p.load_font(L"STSong-Light", L"UniGB-UCS2-H", L"");;
        if (font == -1) {
            wcerr << L"Error: " << p.get_errmsg() << endl;
            return(2);
        }
        //输出标题
        p.setfont(font, 24);
        p.set_text_pos(200, 800);
        p.show(L"Hello world");

        p.continue_text(L"你好,世界");
        p.end_page_ext(L"");
        p.end_document(L"");
    }
    catch (PDFlib::Exception &ex) {
        wcerr << L"PDFlib exception occurred in hello sample: " << endl
            << L"[" << ex.get_errnum() << L"] " << ex.get_apiname()
            << L": " << ex.get_errmsg() << endl;
        return 2;
    }
    return 0;
}

  代码运行成功就会生成一个test.pdf文件,内容如下:

使用C++编辑导出pdf文件

 

 

pdflib和Cmaps分享:

链接:https://pan.baidu.com/s/1WPz3pNMtszG5M-gFKQ51-Q 提取码:z53r

 

原文链接: https://www.cnblogs.com/honernan/p/12991640.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    使用C++编辑导出pdf文件

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/351700

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午7:01
下一篇 2023年3月2日 上午7:01

相关推荐