Как дать имя файла виртуальному принтеру "Microsoft print to pdf" на языке C++ ?
Я должен распечатать PDF с помощью моего приложения C++ в Windows 10, не открывая "диалог сохранения файла". Ранее я использовал " Generic Postscript Printer "для сохранения файла с заданным именем как". ps", а затем преобразовал его в PDF с помощью другого приложения. Windows 10 не поддерживает "универсальный принтер Postscript", но имеет встроенный принтер "Microsoft Print to Pdf". Я знаю, как дать ему имя файла + свойство бесшумной печати с помощью C#
// initialize PrintDocument object PrintDocument doc = new PrintDocument() { PrinterSettings = new PrinterSettings() { // set the printer to 'Microsoft Print to PDF' PrinterName = "Microsoft Print to PDF", // tell the object this document will print to file PrintToFile = true, // set the filename to whatever you like (full path) PrintFileName = Path.Combine(directory, file + ".pdf"), }; }
но не могу найти решение на C++. Кто-нибудь знает, существует ли она вообще?
Что я уже пробовал:
Я использую функцию StartDoc, и принтер открывает диалоговое окно для сохранения файла (он работает хорошо, и мой поток печатается нормально). Однако мне нужно "тихое" решение (без диалога).
Richard MacCutchan
Использование C++ будет таким же; просто установите различные поля в настройках принтера перед началом печати.
juliashs
Спасибо! Я пытался, но не могу найти подходящую ссылку на C++ для API к принтеру
Richard MacCutchan
Видеть GDI Print API Reference (Windows)[^].
juliashs
Да! Большое спасибо!
Следующий код работает нормально:
DOCINFO Dinfo ;
...
Dinfo. lpszOutput = (LPCSTR)"D:\\Test1.pdf";
KarstenK
пожалуйста, напишите такой ответ как решение, чтобы отметить его как ответ. ;-)
juliashs
Готово :) спасибо!