Я пытаюсь понять мои варианты для программного программирования с принтером, чтобы получить что-то, напечатанное из прикладного программного обеспечения. Другими словами, что происходит, когда пользователь сообщает моему приложению, что они хотят что-то напечатать. Я понимаю, как он работал в "старые времена", и я пытаюсь понять более сложный современный мир.
В старые времена существовали два основных типа принтеров: принтеры HP, которые понимали принтеры HPGL и Postscript. Таким образом, вы можете отправить распечатку на любом из этих двух языков, и принтер преобразует ваш код в точки на странице. Вы также можете вставлять растровое изображение в виде двоичных данных. Например, в HPGL (или PCL) вы можете дать команду, которая в основном говорит: "Пожалуйста, распечатайте это растровое изображение, и вот растровые данные", за которым следует гигантская капля двоичных данных. Очевидно, что если вы это сделаете, объем данных, поступающих на принтер, будет намного больше и может задушить принтер. У Postscript была такая же способность. Если вы печатали текст, вы могли бы сказать принтеру распечатать текст "xyz" в шрифте TimesNewRoman (или что-то еще), и принтер рассчитает все точки для вас (это означает, что принтер должен был знать шрифт, или вам пришлось загрузить шрифт на принтер раньше времени).
Теперь, поскольку я понимаю формат PDF, он похож на Postscript, но он не является языком Postscript и может включать только "объекты". Так, например, в Postscript вы можете сделать цикл и сказать "распечатать этот круг 50 000 раз", перемещая его точное местоположение. В PDF я понимаю, что вы не можете этого сделать, вам нужно указать каждый круг как отдельный "объект".
Итак, как работают современные принтеры? Могу ли я отправить HPGL/PCL на принтер? Все ли принтеры теперь стандартизированы на Postscript? Если да, значит ли это, мой лучший вариант - создать Postscript, а затем отправить это raw на принтер? Если я отправляю Postscript, мне нужно каким-то образом сказать принтеру, что это Postscript каким-то образом?
В Windows я знаю "стандартный" способ печати, который предназначен для запроса возможностей устройства и запроса контекста устройства, тогда вы можете рисовать линии, фигуры и текст, используя вызовы Windows в этом контексте. Однако, очевидно, это чрезвычайно примитивно по сравнению с Postscript (или HPGL/PCL). Есть ли способ, которым я могу либо напрямую связаться с драйвером принтера, либо сказать Windows: "вот мой код Postscript, пожалуйста, передайте его на принтер для печати"?