Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local printer = peripheral.find("printer")
- local path = ""
- local c = 0
- local x, y, X, Y
- local w, h
- local esito = true
- local linee = {}
- local tot = 0
- local pag = 0
- local l_max = 0
- local function file_ex(file)
- local f = io.open(file, "rb")
- if (f) then f:close() end
- return f ~= nil
- end
- local function pag_n()
- if (not printer.newPage()) then
- error("Cacatum errorum: Hai cacato la carta e l'inchiostro?")
- end
- end
- local function pag_c()
- if (not printer.endPage()) then
- error("Escretatum errorum: Impossibile stampare")
- end
- end
- x, y = term.getCursorPos()
- w, h = term.getSize()
- repeat
- term.setCursorPos(x, y)
- for i=1,w,1 do
- write(" ")
- end
- term.setCursorPos(x, y)
- write("> Percorso del file: ")
- path = read()
- if (file_ex(path)) then
- esito = true
- else
- esito = false
- c = c + 1
- print(("> Diarrea errorum (%d): Il file non esiste"):format(c))
- end
- until (esito)
- print()
- for linea in io.lines(path) do
- linee[#linee+1] = linea
- if (string.len(linea) > l_max) then
- l_max = string.len(linea)
- end
- end
- pag_n()
- w, h = printer.getPageSize()
- write("> ")
- if (l_max > w) then
- term.setTextColor(colors.red)
- print("(ATTENZIONE: La formattazione del file supera il bordo. Cio' potrebbe comportare artefatti)")
- term.setTextColor(colors.white)
- write("Annullare la stampa (y/n)?: ")
- if (read() ~= "n") then
- exit(1)
- end
- end
- print("> Stampando...")
- printer.setPageTitle("Pag 1")
- tot = math.ceil(#linee/h)
- print("> Pagine da stampare:", tot)
- X, Y = term.getCursorPos()
- for i=1,#linee,1 do
- pag = math.ceil(i/h)
- term.setCursorPos(X, Y)
- print(("> Pag %d/%d | %5.1f%s"):format(pag, tot, (i%h)/((pag~=tot) and h or #linee%h)*100, "%"))
- x, y = printer.getCursorPos()
- printer.write(linee[i])
- printer.setCursorPos(0, y+1)
- if (i%h == 0) then
- pag_c()
- pag_n()
- printer.setPageTitle("Pag " .. pag+1)
- end
- os.sleep(0.01)
- end
- pag_c()
- write("> ")
- term.setTextColor(colors.lime)
- print("Finito")
- term.setTextColor(colors.white)
- print("\n> Enter per chiudere")
- read()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement