用C++生成PDF文档

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:zyhpeter2011
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:PDF文件格式是国际通用的电子文档交换事实标准,PDF文档可以在各种平台下阅读、编辑、发布。通过实例介绍在C++中用PDFLib开发库创建PDF文档的过程, PDFlib 几乎可以在所有计算机操作系统上运行。
  关键词:C++;PDF文档;PDFLib开发库
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)04-11024-02
  
  1 PDF文档简介
  PDF是英文Portable Document Format的缩写,其文件格式是国际通用的电子文档交换事实标准,被许多国家采用。PDF文档可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。可以通过免费的Adobe Acrobat Reader来阅读、编辑PDF文档。Adobe 可移植文档格式 (PDF) 由 Adobe Systems 创立,并在近二十年的时间里日甄完善。使用 Adobe 可移植文档格式,可以捕获和查看来自任何应用程序、任何计算机系统的丰富强大的信息, 并将这些信息与全球各地的任何人共享。
  
  2 生成PDF文档的技术基础
  PDFLib是用于创建PDF文档的开发库,提供了简单易用的API,隐藏了创建PDF的复杂细节且不需要第三方软件的支持。PDFlib 程序库包含着各式模块,通过对它们的调用客户可以生成含有文本,矢量图, 图象及超文本等的PDF文档。PDFlib 可以帮助你完成以下任务,根据用户要求生成文本PDF 文档,为数据库生成PDF 格式的报表,将图象转换成PDF 文档。PDFlib 提供了三个系列的软件包:PDFlib, PDFlib+PDI及 PDFlib Personalization Server (PPS)。简单易用的PDFlib 程序接口PDFlib 核心是用ANSI C 语言编写的。在VB6.0、VC++6.0、.NET、Java等程序开发环境中,用户只需通过简单的API 就能实现对不同功能模块的调用。
  
  3 生成PDF文档
  PDFLib是用于创建PDF文档的开发库包括pdflib.cpp、pdflib.h、pdflib.dll、pdflib.lib等文件。建立基于对话框的工程(名为:lflpdf)后,将它们拷贝到工程目录中。生成PDF文档的C++主要程序代码如下。
  void ClflpdfDlg::OnBnClickedButPdfbrowse()
  {// 浏览Button控件通知处理程序代码
  int mkp;
  CString str,type_page;
  str="PDFFH1.PDF";
  type_page = "B5";
  mkp=makefhpdf(type_page,str);
  if (mkp==0){
  AfxMessageBox("数据连接失败或无数据!");
  return; }
  if (mkp==-1){
  AfxMessageBox("pdf文件生成失败!");
  return;}
  ShellExecute(NULL,"open",str,NULL,NULL,SW_SHOW);}
  int ClflpdfDlg::makefhpdf(CString m_page,CString gh)
  {//生成pdf文档的成员函数
  PDF *p;
  int font,songfont,heifont,fangfont,i, maxi;
  char * chrgh;
  CString str,str1,gh1;
  CString ll[10][5];
  _variant_t var;
  gh1 = gh;
  chrgh=gh1.GetBuffer(gh1.GetLength());
  for(i = 0; i < 10; i++)
  for(maxi = 0; maxi < 5; maxi++)
  ll[i][maxi] = "";
  try
  {//连接数据库
  m_pConn.CreateInstance(__uuidof(Connection));
  m_pConn->CursorLocation=adUseClient;
  str_pConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=jlqj.mdb";
  m_pConn->Open((LPCSTR)_bstr_t(str_pConn),"","",adModeUnknown);
  str.Format("SELECT * FROM jbsq");
  m_pRecordset.CreateInstance(__uuidof(Recordset));
  m_pRecordset->Open((LPCSTR)_bstr_t(str), m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
  catch(...){
  AfxMessageBox("数据库连接失败!");
  return FALSE;}
  if ((p = PDF_new()) == (PDF *) 0)
  { return -1; }
  //下面为生成pdf文档的程序段
  PDF_set_parameter(p,"compatibility", "1.4");
  PDF_TRY(p) {
  if (PDF_begin_document(p, chrgh, 0, "") == -1) {
  return -1;}
  font = PDF_load_font(p, "Helvetica-Bold", 0, "host", "");//定义字体
  songfont = PDF_load_font(p,"STSongStd-Light-Acro",0, "GBK-EUC-H", "");
  heifont = PDF_load_font(p,"STSong-Light",0, "GBK-EUC-H", "");
  fangfont = PDF_load_font(p,"AdobeSongStd-Light-Acro", 0,"GBK-EUC-H", "");
  PDF_set_parameter(p, "hypertextencoding", "host");
  PDF_begin_page_ext(p,b5_height ,b5_width , "");}}
  PDF_CATCH(p) {
  PDF_delete(p);
  return -1;}
  PDF_delete(p);
  return 1;}
  
  4 结束语
  以上生成PDF文档的C++程序,在Visual C++.NET2003下调试通过。它可以完成输出汉字及表格,具有选择汉字字体字号等功能。其实,PDFlib还有许多功能,比如输出矢量图, 图象及超文本等功能,具体可以参考PDFlib函数手册(可以到VC知识库中下载pdflib5.0,里面包含了该手册)。
  参考文献:
  [1]陈坚,陈伟.等.Visual C++网络高级编程[M].北京:人民邮电出版社,2001.8.
  [2]Bjarne Stroustrup(美),裘宗燕. C++程序设计语言[M].北京:机械工业出版社,2002.7.
  [3]林俊杰.新一代Visual C++ 2005程序设计[M].北京.清华大学出版社,2006.
  [4]龚建伟.等. Visual C++/Turbo C串囗通信编程实践[M].北京:电子工业出版社,2004.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:本文首先描述Web Service在解决安全问题上的现有方案的不足,在此基础上引入了WS-Security规范,并对此从完整性、机密性、认证这三个主要方面进行了详细的描述,最后简要介绍了在SOAP中如何将以上几方面进行综合。  关键字:WS-Security;Web Service;XML Signature;XML Encryption  中图分类号:TP393文献标识码:A文章编号:10
期刊
摘要:为了解决传统专网可扩展性和可维护性比较差的问题,在ISP的IP城域网中,使用MPLS技术组建VPN,通过PE、CE的配置,实现基于IP城域网的BGP MPLS VPN运营。BGP MPLS VPN具有组网容易、易于扩展和维护等优点,为企业节省了大量的人力、物力和财力。  关键词:BGP MPLS VPN;VRF;RD;RT  中图分类号:TP393 文献标识码:A 文章编号:1009-304
期刊
摘要:设计并实现基于Web的铁路供电段电力作业安全督导系统,利用铁路计算机内部专用网络实现总公司及各供电段电力作业安全督导。  关键词:Web;B/S模式;安全督导  中图分类号:TP315文献标识码:A文章编号:1009-3044(2007)04-10896-02    1 引言  为了适应铁路供电段电力作业劳动安全的现代化分析和管理,借助铁路内部专用网,利用ASP.NET及相关技术己成功开发出
期刊
摘要:虚拟局域网(VLAN)技术改变了传统网络的结构,为计算机网络的不断发展创造了新的条件。本文主要介绍了虚拟局域网(VLAN)技术的概念,并通过具体事例展示了基于第三层交换的VLAN技术在提高校园网络性能上的优越性。  关键词:虚拟局域网;第三层交换;校园网  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10987-02    1 引言  以计算机互联网为核
期刊
摘要:本文介绍了Browser/Server体系结构开发应用软件的特点,提出了三层体系机构的模型,分析了三层体系结构的具体运行程序,最后根据这个模型开发了一个应用实例,并给出了这个实例的部分代码。  关键词:WEB;COM;应用软件;服务器  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-11003-02    1 引言  由于客户服务器两层结构存在灵活性差、升
期刊
摘要:实现Netscape邮件服务的目录管理,邮件服务与目录服务的数据转换,及详细配置情况。  关键词:Netscape Messaging Server;Netscape Directory Server;电子邮件;Domain  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)04-10975-02    1 引言  在信息社会中,拥有一个功能完善、性能优异的电子邮
期刊
摘要:本文用面向对象的思想阐述了俄罗斯方块游戏实现的机制,并通过VC++6.0实现了这个游戏。  关键词:VC++6.0;面向对象的程序设计;俄罗斯方块  中图分类号:TP311.52 文献标识码:A文章编号:1009-3044(2007)04-11012-02    1 引言  本文主要讲解如何使用VC++6.0和面向对象的思想来实现俄罗斯方块的游戏。  游戏的主要思路是:    2 首先定义一
期刊
2007年4月6日,上海易当网络科技有限公司正式宣布,已经同韩国艺堂娱乐产业有限公司(YeDang Online)签署了《ACE Online》的代理协议。根据协议,易当网络将拥有这款3D大型多人在线角色扮演飞行射击游戏在中国大陆地区的独家运营权。  在这款集角色扮演、飞行、射击等多种元素的大型3D网游中,玩家们将体验到前所未有的刺激。再加上新颖的游戏模式、科幻故事背景、超酷的飞行动作和互动性极强
期刊
摘要:校园网络建设中IP地址匮乏是一个十分突出的问题,NAT是解决该问题的一种比较行之有效的技术,本文探讨了NAT技术的原理以及在linux系统中的实现方案。  关键词:NAT;Linux;私有地址;全局地址  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10984-03    1 引言  IP地址的匮乏对于任何一个高校的网络管理员来讲,都应该是一个让人头疼的
期刊
拼音输入法是目前大家使用非常广泛的一种输入法,由于使用简单、门槛低而深得用户喜欢,相比之下,五笔输入法却需要掌握五笔拆分的规则,必须背五笔字根,让很多用户望而却步。也正因为如此,近年来拼音输入法蓬勃发展,2006年,搜狗拼音输入法的横空出世让拼音输入法领域为之一震,而就在最近,谷歌拼音输入法的推出让输入法领域再掀波澜,加上以前用户使用的紫光输入法、拼音加加、微软拼音、智能ABC,一时间,拼音输入法
期刊