Zmiana ustawień drukarki za pomocą wiersza polecenia

2

Mam drukarkę etykiet Brother PT-9800PCN, która używa taśm od 6 mm do 36 mm. Czy istnieje sposób zmiany domyślnego rozmiaru papieru (szerokość, długość, orientacja) za pomocą wiersza polecenia? Generuję etykiety 18x113mm i 24x50mm w plikach pdf przy użyciu fpdf, a podczas wysyłania plików pdf do drukarki przez php drukuje tylko na tym, jaki rozmiar papieru jest ustawiony jako domyślny. Próbowałem poleceń z Adobe, Foxit i Sumatra. Próbowałem także w wierszu polecenia Verypdf pdfprint, który ma opcję ustawienia rozmiaru papieru z takim samym rezultatem. Myślałem, że jeśli zmienię za pomocą wiersza polecenia domyślny rozmiar papieru, a następnie wyślę zadanie drukowania, powinno działać.

Xlucian
źródło

Odpowiedzi:

1

Po długim uderzeniu głową udało mi się go uruchomić. To co zrobiłem jest

-> dla każdego wymaganego rozmiaru papieru przejdź do preferencji drukarki i ustaw rozmiar strony, szerokość, długość i inne wymagane ustawienia

-> w cmd run po wykonaniu wszystkich ustawień dla każdego rozmiaru strony

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

-> dla każdego wymaganego rozmiaru strony zapisałem ustawienia jako 18x113m.dati24x45mm.dat

To jest kod, którego używam w php do wysyłania moich plików pdf do drukarki

<?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");
?>
Xlucian
źródło