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