下面的代码段发送的PostScript内容(保存在pBuf
缓冲液中)到CutePDF打印机PDF:PDF打印机生成仅当输出文件名没有设置
if (OpenPrinter(printerName, &hPrinter, NULL))
{
DOC_INFO_1 di1;
di1.pDatatype = L"RAW";
di1.pDocName = L"Raw print document";
di1.pOutputFile = NULL;
StartDocPrinter(hPrinter, 1, (LPBYTE)&di1);
StartPagePrinter(hPrinter);
DWORD dwWritten = 0;
WritePrinter(hPrinter, pBuf, dwBufSize, &dwWritten);
EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
}
该代码的执行过程中,会出现一个对话框在那里我指定输出文件的名称(例如D:/out.pdf
),然后生成pdf文件。到现在为止还挺好。这些问题开始的时候我试图通过改变片段的4号线,以避免文件名识别步骤:
di1.pOutputFile = L"D:/out.pdf";
这样的代码并不显示其执行(如预期)中的对话框,但结果D:/out.pdf
ISN是pdf文件,它是发送到打印机的PostScript文件的副本(pBuf
缓冲区的内容的副本)。 PDF Writer的行为方式相同。为什么PDF打印机以这种方式行事,我如何才能实现所需的行为(生成PDF文件而无需在UI中指定其名称)?