MFC--利用Haru库生成PDF文件
2016-08-21 16:03
357 查看
haru free pdf类库下载地址:
http://download.csdn.net/detail/u011642774/9616781
解压后我们要用到三个东西:
libhpdf.dll
libhpdf.lib
include整个文件夹
解压后复制libhpdf.dll到项目的release和debug目录下;
libhpdf.lib和include文件夹直接复制到源文件目录下;
在xxxDlg.cpp里添加下面两句:
典型的编程流程:见压缩包中的how_to_use.html文件:
大致分为5个步骤:见下面程序的1~5
使用过程中有如下注意:
1.Graphics mode :不同的方法需要不同的mode,通过相关函数改变mode。
2.坐标原点为屏幕左下角
3.颜色通过(r,g,b)调节,有效值0~1.
更加详尽的使用方法见压缩包中doc文件夹中的内容及相关例程。
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 outlines HPDF_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);///显示字符串方法1 CTime 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、Stroke int 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_DESCRIPION HPDF_Page_Stroke (page); //4.Save PDF////////////////////////////////////////////////////////////////////////////////////// ///字符数组拼接字符串的方法:///char fname[256]; strcpy (fname, argv[0]); strcat (fname, ".pdf"); ///文件夹必须是之前创建好的,如果文件夹不存在,不会自动创建 ///路径不存在就创建,PathFileExists检验路径是否有效,有效返回true if (!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文件夹中的内容及相关例程。
相关文章推荐
- MFC使用Haru free pdf lib生成pdf文件
- 如何利用iText在java程序中生成PDF文件
- 利用word模板生成word或pdf文件并输出
- 利用itextsharp生成pdf并生成zip文件及其邮件发送
- 利用Node.js与PDFKIT 生成PDF文件
- .NET动态生成PDF文件(利用iTextSharp)
- 利用pyhton 生成PDF文件
- 使用flying-saucer,利用HTML来生成PDF文件(裴东辉)
- 利用Python的Django框架生成PDF文件的教程
- 利用MFC的CFileDialog生成Windows2000文件对话框
- VC6.0利用CreateProcess创建子进程,MFC调用Win32生成的.exe文件为例
- 配置Emacs org-mode利用latex生成pdf文件
- 利用 Pandoc 将 Markdown 生成 Word/PDF 文件
- .NET动态生成PDF文件(利用iTextSharp)
- 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件
- 利用itext 生成pdf 文件---cell 跨页问题
- 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件
- java 利用pdf模板 生成 pdf文件
- 利用 Pandoc 将 Markdown 生成 Word/PDF 文件
- 利用pyhton 生成PDF文件