DOCINFO

DOCINFO構造体に、出力パスを指定して、Microsoft Print to PDFで印刷すると、実際のプリンタに印刷されるわけではなく、指定のパスにPDF出力される。

DOCINFOA (wingdi.h) - Win32 apps | Microsoft Docs
Microsoft Print to PDF で C/C++ コードから出力ファイル名を指定する方法 - perce-neigeのブログ

shlwapi.libをリンク
shlwapi.libをリンク

shlwapi.libをリンク。
WM_CREATEで、

エディットコントロールをもう一つ用意して、実行ファイルと同じところにtest.pdfを作成する前提でパスを生成して、エディットコントロールにセット。

WM_COMMANDのID_ITEM_PRINTで、

エディットコントロールのパスをdi.lpszOutputにセットして、印刷。

Microsoft Print to PDF
Microsoft Print to PDF

Microsoft Print to PDF、これだね。

プリンターのプロパティ
プリンターのプロパティ

プリンターのプロパティで、

プリンター名をコピー
プリンター名をコピー

プリンター名をコピー。

起動するとパスがセットされている
起動するとパスがセットされている

起動するとパスがセットされている。

先程のプリンター名をセット
先程のプリンター名をセット

先程のプリンター名をセット。

印刷開始
印刷開始

印刷開始。

test.pdfが出力される。
test.pdfが出力される。

test.pdfが出力される。

開くとこんな感じで印字されている
開くとこんな感じで印字されている

開くとこんな感じで印字されている。

Sample/winapi/DOCINFO/DOCINFO/src/DOCINFO at master · bg1bgst333/Sample · GitHub