Created
February 15, 2020 16:19
-
-
Save AllanRPereira/714a3a72dad9e32af03235aee3eae9ff to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from sh import lp, lpstat, lpoptions, lpq | |
class APICups: | |
self.cupsOptions = { | |
"media" : ["Size of the paper", ["Letter", 'Legal ', 'A4 ', 'COM10 ', 'DL ', 'Transparency ', 'Upper ', 'Lower', 'MultiPurpose','LargeCapacity', "Custom.WIDTHxLENGTH"]], | |
"orientation" : ["Orientation of printing", | |
["landscape", "portrait", | |
["orientation-requested", | |
["Reverse Landscape", 5, "Reverse Portrait", 6]]]], | |
"sides" : ["Sides of the paper", | |
["two-sided-short-edge", "two-sided-long-edge", "one-sided"]], | |
"job-sheets" : ["Banner of the page", | |
["none", "classified", "confidential", "secret", "standart", "topsecret", "unclassified"]], | |
"job-hold-until" : ["Define the time to job will be make", | |
["indefinitive", "day-time", "night", "second-shift", "third-shift", "weekend", "HH:MM"]], | |
"job-priorit" : ["Defini priority of the job"], | |
"outputorder" : ["Order of exit pages", ["normal", "reverse"]], | |
"page-ranges" : ["Specificed a range of pages to print"], | |
"number-ip" : ["Choose a number of pages impress in one page", | |
[1,2,4,6,9,16]], | |
"page-border" : ["Choose border to draw around each page", | |
["double", "double-thick", "none", "single", "single-thick"]], | |
"number-up-layout" : ["Align of the page in the paper", | |
["bottom", "top", "left", "right"]], | |
"fit-to-page" : ["Scaling file for the page"], | |
"mirror" : ["Printing mirror pages"] | |
} | |
def __init__(self, filename, options=[]): | |
self.filename = filename | |
self.options = options | |
self.printer_avaliable = "" | |
self.dictionary_options = "" | |
def impress(self): | |
try: | |
arguments = [f"-o {arg}" for arg in self.options] | |
arguments.append(self.filename) | |
lp(arguments) | |
except Exception as error: | |
return error | |
def getPrinter(self): | |
command_return = lpstat("-p", "-d") | |
command_return = command_return.split("\n") | |
impress_list = [line.split(" ")[1] for line in command_return[1::-1]] | |
self.printer_avaliable = impress_list | |
return impress_list | |
def checkPrinter(self, printer): | |
if self.printer_avaliable == "": | |
self.printer_avaliable == self.getPrinter() | |
if printer not in self.printer_avaliable: | |
return "This printer not avaliable in your system, try getPrinter() function to see the avaliable printers" | |
else: | |
return True | |
def setDefaultPrinter(self, printer): | |
if self.checkPrinter(printer): | |
lpoptions("-d", printer) | |
return f"Printer: {printer} is now default!" | |
def getPrinterOptions(self, printer): | |
if self.checkPrinter: | |
all_brute_options = lpoptions("-p", printer, "-l").split("\n") | |
all_brute_options = all_brute_options.split(":") | |
map_options = map(all_brute_options[0::2], all_brute_options[1::2]) | |
self.dictionary_options = dict(map_options) | |
return self.dictionary_options | |
def getJobsList(self): | |
""" | |
Working for a only printer! | |
""" | |
result = lpq().split("\n") | |
all_workings = {} | |
all_workings["Printer"] = result[0].split(" ")[0] | |
jobs_id_list = [lista.split(" ") for lista in result[2::]] | |
jobs_list = [list(set(jobs_id_list)) for job in jobs_id_list] | |
all_workings["Order"] = [job[0] for job in jobs_list] | |
all_workings["Owner"] = [job[1] for job in jobs_list] | |
all_workings["Jobs ID"] = [job[2] for job in jobs_list] | |
all_workings["Filename"] = [job[3] for job in jobs_list] | |
return all_workings | |
def startJobId(self, job_id): | |
return lp("-i", job_id, "-H", "resume") | |
""" | |
Guide to Help (Portuguese) | |
Print diretamente para a impressora | |
lp filename || lpr filename | |
Mostrar as impressoras disponíveis | |
lpstat -p -d | |
-p == impressoras | |
-d == a default | |
Escolhendo uma impressora como default | |
lpoptions -d impressora | |
Imprimir diretamente da saída de um programa | |
program | lp | |
program | lp -d printer | |
program | lpr | |
program | lpr -P printer | |
Especificar a forma de impressão | |
lp -o landscape -o fit-to-page -o media=A4 filename.jpg | |
lpr -o landscape -o fit-to-page -o media=A4 filename.jpg | |
Ver as opções de uma impressora | |
lpoptions -p printer -l | |
Criar opções salvas impressora | |
lpoptions -p printer/instance -o name=value ... | |
Imprimir muitas cópias | |
lp -n num-copies filename | |
lpr -#num-copies filename | |
Cancelar uma impressão | |
cancel job-id | |
lprm job-id | |
Obter job-id | |
lpq | |
lpstat | |
Mover trabalho para outra impressora | |
lpmove job-id destination | |
Selecionar as especificações da impressão | |
lp -o media=Letter filename | |
lp -o media=Letter,MultiPurpose filename | |
lpr -o media=Letter,Transparency filename | |
lpr -o media=Letter,MultiPurpose,Transparency filename | |
Selecionar o tamanho da folha | |
lp -o media=Custom.WIDTHxLENGTH filename | |
lp -o media=Custom.WIDTHxLENGTHin filename | |
lp -o media=Custom.WIDTHxLENGTHcm filename | |
lp -o media=Custom.WIDTHxLENGTHmm filename | |
Orientações da página | |
lp -o landscape filename | |
lpr -o landscape filename | |
-o orientation-requested=N option rotates the page depending on the value of N: | |
-o orientation-requested=3 - portrait orientation (no rotation) | |
-o orientation-requested=4 - landscape orientation (90 degrees) | |
-o orientation-requested=5 - reverse landscape or seascape orientation (270 degrees) | |
-o orientation-requested=6 reverse portrait or upside-down orientation (180 degrees) | |
-o job-hold-until=when option tells CUPS to delay printing until the "when" time, which can be one of the following: | |
-o job-hold-until=indefinite; print only after released by the user or an administrator | |
-o job-hold-until=day-time; print from 6am to 6pm local time | |
-o job-hold-until=night; print from 6pm to 6am local time | |
-o job-hold-until=second-shift; print from 4pm to 12am local time | |
-o job-hold-until=third-shift; print from 12am to 8am local time | |
-o job-hold-until=weekend; print on Saturday or Sunday | |
-o job-hold-until=HH:MM; print at the specified UTC time | |
Acionar trabalho indefinite | |
lp -i job-id -H resume | |
Nível de Prioridade | |
-o job-priority=NNN | |
Páginas Específicas | |
lp -o page-ranges=1 filename | |
lp -o page-ranges=1-4 filename | |
Páginas por folha | |
lp -o number-up=1 filename | |
lp -o number-up=2 filename | |
Bordas nas páginas | |
-o page-border=value | |
Alinhamento na página | |
-o number-up-layout=btlr | |
Corte de página | |
lp -o fit-to-page filename | |
Ordem de impressão | |
lp -o outputorder=reverse filename | |
lpr -o outputorder=reverse filename | |
""" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment