Изменение настроек принтера через командную строку

1966
xlucian

У меня есть принтер этикеток Brother PT-9800PCN, который использует ленты от 6 до 36 мм. Есть ли способ изменить размер бумаги по умолчанию (ширина, длина, ориентация) через командную строку? Я создаю этикетки размером 18x113 мм и 24x50 мм в формате PDF с использованием fpdf, и при отправке файлов PDF на принтер через php он печатает только на том формате бумаги, который установлен по умолчанию. Я пробовал команды с Adobe, Foxit и Sumatra. Я также попробовал командную строку Verypdf pdfprint, в которой есть возможность установить размер бумаги с тем же результатом. Думал, что если я изменю с помощью командной строки размер бумаги по умолчанию, а затем отправлю задание на печать, оно должно работать.

2

1 ответ на вопрос

1
xlucian

После долгого удара головой мне удалось заставить его работать. Что я сделал

-> для каждого необходимого формата бумаги зайдите в настройки принтера и установите размер страницы, ширину, длину и любые другие необходимые параметры

-> в cmd запустить после выполнения всех настроек для каждого размера страницы

rundll32 printui.dll PrintUIEntry /Ss /n "\\network\printer" /a "C:\prefered_location\temp_settings.dat" u 

-> для каждого требуемого размера страницы я сохранил настройки как 18x113m.datи24x45mm.dat

Это код, который я использую в php для отправки моих PDF-файлов на принтер

<?php //save current printer settings to a temp file echo system("rundll32 printui.dll PrintUIEntry /Ss /n \"\\\\network\\printer\" /a \"C:\\location\\temp_settings.dat\" u"); //load the required page settings echo system("rundll32 printui.dll PrintUIEntry /Sr /n \"\\\\network\\printer\" /a \"C:\\location\\24x45mm.dat\" u"); //send pdf to printer. I've used in this case pdfprint.exe. Foxit can be used as well. Adobe didn't work. Sumatra still sends the pdf only to a 36mm tape echo system("C:\\location\\pdfprint_cmd\\pdfprint.exe -printer \"\\\\network\\printer\" C:\\location\\mypdf.pdf"); //restore temp settings echo system("rundll32 printui.dll PrintUIEntry /Sr /n \"\\\\network\\printer\" /a \"C:\\location\\temp_settings.dat\" u"); //delete temp settings file echo system("del C:\\location\\temp_settings.dat"); ?> 

Похожие вопросы