MFC使用Haru free pdf lib生成pdf文件
我們先創建一個項目MFCPDFDemo,在上面添加一個編輯框和一個按鈕:

haru free pdf類庫下載地址
這里直接下載dll,如果想以靜態庫的方式使用,得下載源碼自己編譯。
然后把這個dll添加到項目中,怎么添加就不說了吧,還是說一下吧,萬一有新手看不懂呢。
解壓后我們要用到三個東西:
libhpdf.dll
libhpdf.lib
include整個文件夾
解壓后復制libhpdf.dll到項目的release和debug目錄下;
libhpdf.lib和include文件夾直接復制到源文件目錄下;
在MFCPDFDemoDlg.cpp里添加下面兩句:
#include "include/hpdf.h" #pragma comment(lib, "libhpdf.lib")
在按鈕的處理函數里添加代碼如下:
void CMFCPDFDemoDlg::OnBnClickedBtnSave() { UpdateData(TRUE); const char *page_title = "這個標題居中顯示"; HPDF_Doc pdf; HPDF_Font font; HPDF_Page page; char fname[256]; strcpy (fname, "E:\\"); strcat (fname, CT2A(m_strPath)); strcat (fname, ".pdf"); pdf = HPDF_New (nullptr, nullptr); if (!pdf) { MessageBox(_T("error: cannot create PdfDoc object\n")); return; } /* set compression mode */ HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL); HPDF_STATUS status; HPDF_UseCNSFonts(pdf); HPDF_UseCNSEncodings(pdf); /* create default-font */ font = HPDF_GetFont (pdf, "SimSun", "GB-EUC-H"); /* add a new page object. */ page = HPDF_AddPage (pdf); status = HPDF_Page_SetFontAndSize (page, font, 24); float tw = HPDF_Page_TextWidth (page, page_title); status = HPDF_Page_BeginText (page); status = HPDF_Page_TextOut (page, (HPDF_Page_GetWidth(page) - tw) / 2, HPDF_Page_GetHeight (page) - 50, page_title); status = HPDF_Page_EndText (page); /* save the document to a file */ HPDF_SaveToFile (pdf, fname); /* clean up */ HPDF_Free (pdf); }
添加完代碼后編譯程序,如果提示strcpy不安全就添加編譯選項:

注意,添加的選項是/D _CRT_SECURE_NO_WARNINGS
之后編譯運行,輸入test,點擊保存pdf:

之后在E:下就可以找到test.pdf文件,打開如下:

全文完!
