MFC--利用Haru库生成PDF文件
来源:互联网 发布:mysql-python和mysqldb 编辑:程序博客网 时间:2024/06/06 00:54
haru free pdf类库下载地址:
http://download.csdn.net/detail/u011642774/9616781
解压后我们要用到三个东西:
libhpdf.dll
libhpdf.lib
include整个文件夹
解压后复制libhpdf.dll到项目的release和debug目录下;
libhpdf.lib和include文件夹直接复制到源文件目录下;
在xxxDlg.cpp里添加下面两句:
#include "include/hpdf.h"#pragma comment(lib, "libhpdf.lib")
典型的编程流程:见压缩包中的how_to_use.html文件:
大致分为5个步骤:见下面程序的1~5
BOOL CxxxSystemDlg::GeneratePDF(…… ){//1.初始化文档对象////////////////////////////////////////////////////////////////////////////////HPDF_Doc pdf;pdf=HPDF_New(error_handler,NULL);if(!pdf){AfxMessageBox("错误:创建PDF失败!");return FALSE;}if(setjmp(env) ){HPDF_Free(pdf);AfxMessageBox("错误:生成PDF过程中遇见错误!");return FALSE;}//2.设置文档对象///////////////////////////////////////////////////////////////////////////////////set compression mode HPDF_SetCompressionMode(pdf,HPDF_COMP_ALL);//set page mode to use outlinesHPDF_SetPageMode(pdf,HPDF_PAGE_MODE_USE_OUTLINE);//3.创建Page对象////////////////////////////////////////////////////////////////////////////////HPDF_Page page;page=HPDF_AddPage(pdf);HPDF_Page_SetSize(page,HPDF_PAGE_SIZE_A4,HPDF_PAGE_PORTRAIT);///HPDF_PAGE_SIZE_A4 595*841(in pixel)///HPDF_PAGE_LANDSCAPE A4倒方向 ;HPDF_PAGE_PORTRAIT 正向方向///3.1输出字符串//////////////////////////////////////////////CString str_Showtxt; HPDF_Page_BeginText (page); ///使用条件:当前graphics mode为HPDF_GMODE_PAGE_DESCRIPTION,函数将当前模式改为HPDF_GMODE_TEXT_OBJECT///开始text对象,设置当前text的位置到点(0,0)HPDF_Font font;/* get default font */HPDF_UseCNSFonts(pdf);HPDF_UseCNSEncodings(pdf); font=HPDF_GetFont(pdf,"SimSun","GB-EUC-H");///SimSun宋体、SimHei黑体///显示报告标题HPDF_Page_SetFontAndSize (page, font, 24);//注:字体显示的起始位置指字体左下角的位置HPDF_Page_MoveTextPos (page, HPDF_Page_GetWidth(page)/4, HPDF_Page_GetHeight(page)-60);/////使用条件:graphics mode of the page is in HPDF_GMODE_TEXT_OBJECT/////当前位置(x1,y1),HPDF_Page_MoveTextPos (page, x ,y)移动后的位置(x1+x,y1+y)str_Showtxt="xxx检测结果";HPDF_Page_ShowText (page, str_Showtxt);///显示字符串方法1CTime Curtime;Curtime=CTime::GetCurrentTime();CString strCurT,time1,time2;time1=Curtime.Format("%Y-%m-%d,");time2=Curtime.Format("%H:%M:%S");strCurT=time1+time2;///显示测试时间HPDF_Page_SetFontAndSize (page, font, 12);HPDF_Page_TextOut(page,HPDF_Page_GetWidth(page)*3/4, HPDF_Page_GetHeight(page)-80,strCurT);///显示字符串方法2 HPDF_Page_EndText (page); ///将graphics mode 改为:HPDF_GMODE_PAGE_DESCRIPTION ///必须有HPDF_Page_BeginText (page);HPDF_Page_EndText (page);否则保存PDF失败。///3.2 画线////////////////////////////////////////////////////画线4步骤:设置、起点、LineTo、Strokeint i=0;///*3.2.1 Draw horizontal lines. *////设置线宽 HPDF_Page_SetLineWidth (page, 0.5);//起点HPDF_Page_MoveTo (page, 50, HPDF_Page_GetHeight(page)-90);//横线1//画线 HPDF_Page_LineTo (page, HPDF_Page_GetWidth(page)-50, HPDF_Page_GetHeight(page)-90);///* 3.2.2 Draw vertical lines. */HPDF_Page_MoveTo (page, 50, HPDF_Page_GetHeight(page)-90);//第一根竖线HPDF_Page_LineTo (page, 50, HPDF_Page_GetHeight(page)-495);///画线结束///change the graphics to HPDF_GMODE_PAGE_DESCRIPIONHPDF_Page_Stroke (page);//4.Save PDF/////////////////////////////////////////////////////////////////////////////////////////字符数组拼接字符串的方法:///char fname[256]; strcpy (fname, argv[0]); strcat (fname, ".pdf");///文件夹必须是之前创建好的,如果文件夹不存在,不会自动创建///路径不存在就创建,PathFileExists检验路径是否有效,有效返回trueif (!PathFileExists("D:\\MacTestResult\\")){//当天保存目录_mkdir("D:\\MacTestResult\\");}CString Save_path;Save_path="D:\\MacTestResult\\"+time1+"xxx.pdf";///HPDF_SaveToFile(pdf,Save_path);//5.Cleanup////////////////////////////////////////////////////////////////////////////////////////HPDF_Free(pdf);/////////////////////////////////return TRUE;}
使用过程中有如下注意:
1.Graphics mode :不同的方法需要不同的mode,通过相关函数改变mode。
2.坐标原点为屏幕左下角
3.颜色通过(r,g,b)调节,有效值0~1.
更加详尽的使用方法见压缩包中doc文件夹中的内容及相关例程。
1 0
- MFC--利用Haru库生成PDF文件
- 利用PDFLIB开发库生成PDF文件
- 利用PDFLIB开发库生成PDF文件
- 利用pyhton 生成PDF文件
- 利用pyhton 生成PDF文件
- 如何利用iText在java程序中生成PDF文件
- .NET动态生成PDF文件(利用iTextSharp)
- 利用itext 生成pdf 文件---cell 跨页问题
- 配置Emacs org-mode利用latex生成pdf文件
- 如何利用iText在java程序中生成PDF文件
- 如何利用iText在java程序中生成PDF文件
- 利用Node.js与PDFKIT 生成PDF文件
- 利用Node.js与PDFKIT 生成PDF文件
- 【JAVA生成PDF】利用模板生成PDF
- 利用MFC的CFileDialog生成Windows2000文件对话框
- 利用MFC的CFileDialog生成Windows2000文件对话框
- 利用iText生成PDF文档
- 利用PDFLib生成PDF文档
- 进程的调度算法
- 384. Shuffle an Array
- Stm32串口控制
- Day17、链式存储结构动态分配内存、栈的顺序存储结构和链式存储结构
- 4-HTML5表单提交和PHP环境搭建
- MFC--利用Haru库生成PDF文件
- Longest Prefix_usaco 2.3.1_dp
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
- 5-HTML5框架、背景和实体
- 6-XHTML的使用规范
- 深入浅出MySQL(1)
- 编写类string的构造函数、析构函数和赋值函数
- spring mvc配置文件错误
- 创建博客-用户认证(下)