最近尝试使用pdflib输出pdf文档,但是pdflib的方法很多,要将打印输出与pdf匹配,需要编写很多代码,而且一旦需要修改,也是个麻烦事,所以就想了个偷懒的办法,如下:
1、在项目中加入pdflib支持,具体方法就不赘述了,网上有很多。
2、添加几个变量:
BOOL m_bPrintAsPdf; // 是否输出pdf,初始化为FALSE
CString m_strPdfFileName;
HANDLE m_hPdfDevMode;
HANDLE m_hPdfDevNames;
3、在输出pdf文档的响应函数中:
if(m_hPdfDevMode == NULL || m_hPdfDevNames == NULL)
{ // 使用windows自带的虚拟打印机作为输出媒介,如果没有可以手动安装,但是名称要一致
GetPrinterDevice(_T("Microsoft XPS Document Writer"), &m_hPdfDevNames, &m_hPdfDevMode);
}
TCHAR BASED_CODE szFilter[] = _T("PDF Files(*.pdf)|*.pdf||");
CFileDialog OpenFileDlg(FALSE,
_T("pdf"),
_T(""),
OFN_HIDEREADONLY,
szFilter,
this);
if(OpenFileDlg.DoModal() == IDCANCEL) return;
m_strPdfFileName = OpenFileDlg.GetPath