文档章节

使用PDFLib生成PDF文档教程

yidongkaifa
 yidongkaifa
发布于 2014/08/26 17:09
字数 689
阅读 1039
收藏 0
一、PDF介绍
PDF是Portable Document Format的缩写,PDF文件格式是国际通用的电子文档交换事实标准,被许多国家采用作为电子文档交换。PDF文件可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。您可以通过免费的Adobe Acrobat Reader来阅读、编辑PDF文档。

二、PDFLib介绍
PDFLib是用于创建PDF文档的开发库,提供了简单易用的API,隐藏了创建PDF的复杂细节且不需要第3方软件的支持。PDFLib库对于个人是免费的,对于商业产品需要购买许可, 您可以到VC知识库的工具与资源栏目下载: http://www.kindeditor.com/pdt/4691

三、在VC++中使用PDFLib
本文例子中使用的PDFLib是4.0.2版本,与5.0版本差不多。5.0免费版本中有一个 WWW.PDFLIB.COM 的水印,4.0中没有。

3.1 前期准备
建立工程后,将except.cpp,except.h,pdflib.cpp,pdflib.h,pdflib.dll,pdflib.lib拷贝到工程目录。

3.2 编码
3.2.1 添加对头文件和库的引用 

#include "PDFLib.hpp"

#pragma comment(lib, "PDFLib.lib")
3.2.2生成PDF文档的过程
生成PDF文档的过程非常简单,请看如下编码:int main(void)
{
        try
        {
                PDFlib pdf;

                // 设置兼容参数
                pdf.set_parameter("compatibility", "1.4");        // 兼容Acrobat 5

                // 打开文档
                if(pdf.open("vckbase.pdf") == -1)
                        throw("打开文件出错!");

                // 设置文档信息
                pdf.set_info("Creator", "PDF Creator");
                pdf.set_info("Author", "WangJun");
                pdf.set_info("Title", "Convert to PDF");
                pdf.set_info("Subject", "PDF Creator");
                pdf.set_info("Keywords", "vckbase.com");

                // 开始A4页面
                pdf.begin_page(a4_width, a4_height);

                // 设置字体为12号宋体
                int font_song = pdf.findfont("STSong-Light", "GB-EUC-H", 0);
                pdf.setfont(font_song, 12);

                // 设置起始点
                pdf.set_text_pos(50, a4_height - 50);

                // 设置颜色为蓝色
                pdf.setcolor("fill", "rgb", 0, 0, 1, 0);

                // 输出文字
                pdf.show("VCKBASE.COM欢迎您!");

                pdf.setcolor("fill", "rgb", 0, 0, 0, 0);
                pdf.setfont(font_song, 24);
                pdf.continue_text("在线杂志");

                // 画两根绿线
                pdf.setcolor("stroke", "rgb", 0.24f, 0.51f, 0.047f, 0);
                pdf.moveto(50, a4_height - 80);
                pdf.lineto(a4_width - 50, a4_height - 80);
                pdf.moveto(50, a4_height - 78);
                pdf.lineto(a4_width - 50, a4_height - 78);
                pdf.stroke();

                // 填充一个蓝色方框
                pdf.setcolor("fill", "rgb", 0.04f, 0.24f, 0.62f, 0);
                pdf.rect(50, 50, a4_width - 100, 70);
                pdf.fill();

                // 在指定位置输出文字
                pdf.setcolor("fill", "rgb", 0, 1, 1, 0);
                pdf.setfont(font_song, 16);
                pdf.show_xy("版权所有 VCKBASE", a4_width - 280, 60);

                // 打开并显示一个图像
                int img = pdf.open_image_file("jpeg", "vckbase.jpg", "", 0);
                pdf.place_image(img, 200, 400, 1);
                pdf.close_image(img);

                // 添加附件
                pdf.attach_file(a4_width - 50, 0, 0, a4_height - 150,
                                "vckbase.zip", "VCKBASE", "wj", "zip", "paperclip");

                // 结束本页
                pdf.end_page();

                // 关闭PDF文件
                pdf.close();

        }
        catch(PDFlib::Exception &ex)
        {
                cerr << "错误信息:" << ex.get_message() << endl;
                return -1;
        }
        catch(char *pStrErr)
        {
                cerr << pStrErr << endl;
                return -1;
        }
        catch(...)
        {
                cerr << "发生未知异常!" << endl;
                return -1;
        }

        return 0;
}
PDFLIB还有许多功能,比如书签、PDF导入等功能,具体可以参考PDFLIB函数手册(可以到VC知识库中下载pdflib5.0,里面包含了该手册)。

© 著作权归作者所有

yidongkaifa
粉丝 5
博文 104
码字总数 78796
作品 0
东城
私信 提问
c++ 生成pdf

PDFLib介绍   PDFLib是用于创建PDF文档的开发库,提供了简单易用的API,隐藏了创建PDF的复杂细节且不需要第3方软件的支持。PDFLib库对于个人是免费的,对于商业产品需要购买许可, 您可以到...

moki_oschina
2016/07/06
35
0
利用PDFLib生成PDF文档

本文代码生成的PDF文档效果图 一、PDF介绍 PDF是Portable Document Format的缩写,PDF文件格式是国际通用的电子文档交换事实标准,被许多国家采用作为电子文档交换。PDF文件可以在各种平台下阅...

moki_oschina
2015/11/04
0
0
PDFlib是一个用于创建PDF文档的开发工具

PDFlib是一个用于创建PDF文档的开发工具,也可直接在你的服务器端产生PDF输出, 可利用PDFLib提供的简单易用的API(应用编程接口)在服务器或客户端产生PDF文档, PDFlib在生成PDF文档时不需要第...

baobiaokongjian
2014/04/25
0
0
NCache控件使用说明免费下载

NCache 是一个基于 .NET 应用程序关键任务的集群存储器对象缓存。 NCache 也能对运行在服务器的 .NET 应用程序提供一个可升级的 ASP.NET Clustered Session State 解决方案。分布式缓存和会话...

baobiaokongjian
2014/04/29
0
0
PHP生成PDF文件类库大全[开源]

虽然 PHP 有附 PDFlib ,不过使用起来实在有点复杂。 (PHP 说明文件中的范例) FPDF 虽然现在已经停止更新了,但 FPDF 可谓是元老级的 PDF 链接库,短短的几行程序就可以产生出 PDF 档案。最可...

mickelfeng
2013/08/29
0
1

没有更多内容

加载失败,请刷新页面

加载更多

八、Docker Swarm

Docker Swarm有两件事:一个企业级的Docker主机安全集群,另一个是用于协调微服务应用程序的引擎。 在集群方面,它将一个或多个Docker节点组合在一起,并允许你将他们作为一个集群来管理。开...

倪伟伟
昨天
5
0
Fragment懒加载其实很简单

前言 记得去年面试的时候, 面了一家小公司, 那个面试官问我, fragment的懒加载做过吗?我说没做过(确实没做过).后来面试快结束了, 又问我, 懒加载没做过是吗?后来可想而知也没收到offer, (ಥ_...

天王盖地虎626
昨天
4
0
聊聊dubbo的TimeoutFilter

序 本文主要研究一下dubbo的TimeoutFilter ListenableFilter dubbo-2.7.2/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ListenableFilter.java public abstract class Liste......

go4it
昨天
7
0
方法与数组

方法 方法就是完成特定功能的代码块;在很多语言里面都有函数的定义,函数在Java中被称为方法 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) throw 异常{ 函数体;...

凹凸凸
昨天
6
0
死磕 java同步系列之StampedLock源码解析

问题 (1)StampedLock是什么? (2)StampedLock具有什么特性? (3)StampedLock是否支持可重入? (4)StampedLock与ReentrantReadWriteLock的对比? 简介 StampedLock是java8中新增的类,...

彤哥读源码
昨天
19
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部