Member 13541763 Ответов: 2

Печать документа в консольном приложении C++


я работаю над печатью документа для моего группового задания класса. но я не смог найти ничего, что можно было бы распечатать из консольного приложения c++. если да, то как?

Что я уже пробовал:

не удается реализовать PAGESETUPDLG, Объект printdocument,

2 Ответов

Рейтинг:
1

Jochen Arndt

Если ваш документ использует формат, зарегистрированный для печати, вы можете использовать PowerShell (например, написав сценарий, выполняемый из вашего консольного приложения):

start-process -File-Path "path-to-document" -Verb Print


В противном случае вам придется подготовить свои данные в формате, понятном принтеру (необработанные данные).

Все нижеследующее применимо только в том случае, если у вас есть обычные текстовые данные и ваш принтер работает в текстовом режиме.

Затем подготовьте данные печати, поместив команду выбора текстового режима (см. документацию по языку принтера), затем текст (который может потребоваться преобразовать в другой набор символов) и, возможно, команду выхода из текстового режима.

Как только у вас это есть, вы можете использовать CreateFile и WriteFile чтобы отправить данные на принтер. Для этого необходимо иметь имя устройства для принтера. В старые добрые времена интерфейса Centronics это был просто "LPT1". С современными USB-или сетевыми принтерами вам нужно перечислить принтеры (объяснение того, как это сделать, превысит быстрый ответ) или посмотреть его в реестре.

Это может быть также можно использовать печати для Windows и API Sppol но я никогда не использовал его:
Методические указания: отправлять необработанные данные на принтер с помощью API-интерфейса Win32[^]


Рейтинг:
0

KarstenK

Печать означает отправку данных на специальный выход, в данном случае на принтер. Основной подход объясняется в этом разделе ответ переполнения стека.

Может быть, в этом обсуждение на MSDN это полезная ссылка.

Основные задачи объясняются в этом разделе Как выполнить печать из программы Windows. Если вам нужно распечатать с консоли, вы должны создать DC в программе, нарисовать на нем, а затем распечатать его.

Дополнительная статья о компании Win32 API Printer Tutorial C++ использование функций GDI.


Member 13541763

во второй ссылке на самом деле им не нужен диалог принтера, в то время как мне это нужно. я думаю, что это просто необходимо для меня.

Dave Kreskowiak

В консольном приложении нет диалогового окна. Если вам нужен диалог печати, консольное приложение не является правильным типом проекта.

Member 13541763

хорошо, тогда это означает, что я должен сохранить его в файл изображения. в настоящее время у меня в классе не будет принтера. спасибо Вам за помощь. :)

Dave Kreskowiak

Итак, вы пытаетесь "распечатать" растровое изображение? Так что же тебя останавливает?

Создайте растровое изображение соответствующего размера (помните DPI!) и напишите код для рисования текста на "странице".