Alterando as configurações da impressora via linha de comando

2

Eu tenho uma impressora de etiquetas Brother PT-9800PCN que usa fitas de 6 mm a 36 mm. Existe uma maneira de alterar o tamanho padrão do papel (largura, comprimento, orientação) via linha de comando? Estou gerando etiquetas de 18x113mm e 24x50mm em pdfs usando fpdf e ao enviar os pdfs para a impressora via php, ele imprime somente em qual tamanho de papel é definido como padrão. Eu tentei comandos com Adobe, Foxit e Sumatra. Eu também tentei Verypdf pdfprint linha de comando que tem a opção de definir o tamanho do papel com o mesmo resultado. Estava pensando que se eu alterasse via linha de comando o tamanho de papel padrão e depois enviasse o trabalho de impressão, ele deveria funcionar.

    
por xlucian 08.03.2016 / 09:50

1 resposta

1

Após um longo ataque de cabeça, consegui fazê-lo funcionar. O que eu fiz é

- > para cada tamanho de papel necessário, vá para as preferências da impressora e defina o tamanho da página, a largura, o comprimento e qualquer outra configuração necessária

- > em cmd executado após todas as configurações de cada tamanho de página serem concluídas

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

- > para cada tamanho de página que eu solicitei salvei as configurações como 18x113m.dat e 24x45mm.dat

Este é o código que eu uso no php para enviar meus pdfs para a impressora

<?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");
?>
    
por 08.03.2016 / 15:11