利用PDFLib生成PDF文档

本文代码生成的PDF文档效果图

一、PDF介绍

PDF是Portable Document Format的缩写,PDF文件格式是国际通用的电子文档交换事实标准,被许多国家采用作为电子文档交换。PDF文件可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。您可以通过免费的Adobe Acrobat Reader来阅读、编辑PDF文档。

二、PDFLib介绍

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

三、在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,里面包含了该手册)。

时间: 2024-12-25 13:40:01

利用PDFLib生成PDF文档的相关文章

使用PDFLib生成PDF文档教程

一.PDF介绍PDF是Portable Document Format的缩写,PDF文件格式是国际通用的电子文档交换事实标准,被许多国家采用作为电子文档交换.PDF文件可以在各种平台下阅读.编辑.发布.该文件格式支持字体.图像.甚至任何附件的嵌入.您可以通过免费的Adobe Acrobat Reader来阅读.编辑PDF文档. 二.PDFLib介绍PDFLib是用于创建PDF文档的开发库,提供了简单易用的API,隐藏了创建PDF的复杂细节且不需要第3方软件的支持.PDFLib库对于个人是免费的,

利用Java动态生成 PDF 文档

利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那么目前最佳的解决方案,你可能会想到 iText ,对没错... iText+(Velocity / Freemarker)可以实现.不过据我熟悉,iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式会让你头大的.不要失望,接下来

利用jasperreports报表生成pdf文档中文不能显示问题解决方法

在利用jasperreports5.6.0系列开发工具生成的jrxml格式文件和jasper格式文件的项目中,和pdf中字体有关的jar包有如下两个: iText-2.1.7.js2.jar:iTextAsian.jar. 另外在开始设计jrxml格式文件的时候,要注意选择元素(Text Field,Static Text等)的属性值设置. 利用jasperreports报表生成pdf文档中文不能显示问题解决方法

自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器

置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本地吧,所以感到很头疼,刚开始没有方向,所以只有surf the Internet了,网上看了很多资料,渐渐的从一点方向也不懂,到慢慢开始了解怎么着手去做,废话就不说了, 我看网上大概介绍了三种方式:Jasper Report . iText . flying sauser jasper report

使用PHP生成PDF文档

原文:使用PHP生成PDF文档 实际工作中,我们要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天我给大家来介绍一款优秀的PDF库,它就是TCPDF,TCPDF是一个用于快速生成PDF文件的PHP5函数包.TCPDF基于FPDF进行扩展和改进,增强了实用功能. 使用PHP生成PDF文档 实际工作中,我们要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天我给大家来介绍一款优秀的PDF库,它就是TCPDF,TCPDF是一个用于快速生成PDF文件

利用OpenXml生成Word2007文档

一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术,至少可以使用微软提供的Office相关组件来编程,不过对于Office2007(确切的说是Word.Excel和PowerPoint2007)及以上版本,微软提供了这些信息组织的另外一种思路:OpenXml技术. OpenXml是微软office2007及之后版本里,对Office信息内容(Word.Excel和PowerPoint)的一种组织方式,当你创建一个Word2007文档:XXX.docx后,它实际上是一

C#生成PDF文档,读取TXT文件内容

using System.IO;using iTextSharp.text;using iTextSharp.text.pdf; //需要在项目里引用ICSharpCode.SharpZipLib.dll和itextsharp.dllpublic string TxtFilePath;public string SavePdfPath;//保存PDF的路径 #region 读取TXT内容        private string ReadXieyi(string FilePath)      

Java iText使用PDF模板生成PDF文档

我们系统需要生成一个可以打印的PDF文档,老板给了我一个Word文档,按照这个Word文档的格式生成PDF文档. 第一步:下载AdobeAcrobat DC,必须使用这个来制作from域. 第二步:使用AdobeAcrobat DC将Word导成PDF文档. 第三步:由于还要加水印的效果,所以还是使用AdobeAcrobat DC来添加水印,非常方便: 添加水印的方法:使用AdobeAcrobat DC打开PDF文档,"工具"->"编辑PDF"->&qu

利用configparser生成一个文档

比如我想生成一个文档为: [DEFAULT]serveraliveinterval = 45compression = yescompressionlevel = 9forwardx11 = yes [bitbucket.org]user = hg [topsecret.server.com]host port = 50022forwardx11 = no 可以利用configparser来生成: import configparser config = configparser.ConfigP