在网上找了好长时间,一直没找到可以编程实现打印到文件,生成prn格式的功能,今天终于在MSDN中找到了,拿出来分享一下。
其实关键在于DOCINFO这个结构体,下面看看该结构体的定义:
typedef struct { int cbSize; LPCTSTR lpszDocName; LPCTSTR lpszOutput; LPCTSTR lpszDatatype; DWORD fwType; } DOCINFO, *LPDOCINFO;其中 lpszOutput为NULL的话,文档将直接发送到打印机,将其指定为文件路径,即可实现打印到文件的功能。
DOCINFO docInfo ={0};
HDC hDC = ::CreateDC(NULL, lpszPrinter, NULL,NULL);
docInfo.cbSize = sizeof(DOCINFO);
docInfo.lpszDocName = L"TEST";
docInfo.lpszOutput = L"c:\\test.prn";//指定输出文件路径
::StartDoc(hDC,&docInfo);
::StartPage(hDC);
//在此进行绘图工作
::EndPage(hDC);
::EndDoc(hDC);
::DeleteDC(hDC);