Быстрый в изучении - мощный в программировании
Скрипт ИНВЕСТОР на Python

Попробуйте себя в качестве инвестора имея в помощники мощный алгоритм советника на Python...

Все уроки по PyQt5

PyQt5 реализован как комплект Python-модулей. Он включает в себя около 620 классов и 6000 функций и методов...

Скрипт отправки SMS через Python

Была задача отправить SMS-ки большому списку номеров телефона с уточнением цены за всю рассылку "До" ее отправки...

Как распечатать документ в формате чека воспользовавшись Python и Parse?

Как распечатать документ в формате чека воспользовавшись Python и Purse?

Недавно мне нужно было выполнить одно не совсем традиционное действие – распечатать документ определенного формата через мобильное устройство. Суть в следующем – на смартфоне мы вводим определенные данные, затем они отправляются на сервер (это нужно для того, чтобы мы могли с ними работать еще и на сайте) и напечатать документ с ними. Было решено воспользоваться сервисом Google Cloud Print. Функционала в нем для этой цели достаточно, да и в использовании он прост.

Однако, как всегда не обошлось без минусов:

  • Запрос обрабатывается очень долго

  • Сначала мы должны где-то сформировать PDF документ и сделать для него ссылку.
  • Каждый раз требуется выбор принтера (даже если мы подключили к сервису только один, нам все равно придется выбирать – принтер или сохранение в Google Drive).

В итоге было решено сделать небольшой скрипт, который бы выполнял эти действия.

Python отличается своей гибкость, его под эти цели предостаточно, поэтому был выбран именно этой язык. Разрабатывался скрипт в ОС Ubuntu.

Для начала мы должны уметь создавать этот самый PDF документ. Я решил воспользоваться самым простым вариантом – конвертирование HTML разметки в PDF посредством специальной библиотеки xhtml2pdf. Итак, займемся установкой нужных пакетов:

sudo apt-get install python-cups python-pip python-dev

Python-cups нужен нам, чтобы Python смог работать с принтером, а python-pip понадобится для упрощения инсталляции xhtml2pdf.

Теперь установим саму конвертирующую библиотеку:

sudo pip install xhtml2pdf

А вот по этому коду вы поймете, как я заставил все это работать:

 #!/usr/bin/env python
# Печать файла
 
import cups
from xhtml2pdf import pisa
    
def main():
      # Имя, для промежуточного файла PDF формата
      filename = "/home/pi/print.pdf"
    
      # Генерируем контент в виде HTML страницы
      xhtml = "<h1>Test print</h1>\n"
      xhtml += "<h2>This is printed from within a Python application </h2>\n"
      xhtml += "<p style=\"color:red;\">Coloured red using css</p>\n"
          
      pdf = pisa.CreatePDF(xhtml, file(filename, "w"))
      if not pdf.err:
             # Закрываем PDF файл - в противном случае мы не сможем прочитать его
             pdf.dest.close()
      
             # Печатаем файл используя CUPS
             conn = cups.Connection()
             # Получаем список всех принтеров, подключенных к компьютеру
             printers = conn.getPrinters()
             for printer in printers: 
                    # Выводим имя принтера в консоль
                    print printer, printers[printer]["device-uri"]
                    # Получаем первый принтер со списка принтеров
                    printer_name = printers.keys()[0]
                    conn.printFile(printer_name, filename, "Python_Status_print", {})
      else:
             print "Unable to create pdf file"
 
if __name__=="__main__":
      main()

Ничего сложного в этом нет, простейший код. Для вставки картинок подойдет обыкновенный HTML код:

<img src='/home/usr/image.jpg'/>

Теперь вы, наверное, думаете, а где же данные будут хранится и как мы их будем доставать, чтобы распечатать?

Тут нам поможет сервис Parse (parse.com). Качественный бесплатный облачный сервис. Хорош он тем, что может работать практически на любой платформе. А под Python имеется REST API, благодаря которому мы можем отправлять любой запрос посредством нескольких строк. Чтобы вытянуть их с сервиса нам понадобится такой код:

 connection = httplib.HTTPSConnection('api.parse.com', 443)
 connection.connect()
 connection.request('GET', '/1/classes/TestPay', '', {
       "X-Parse-Application-Id": "yourAppId",
       "X-Parse-REST-API-Key": "yourRestApiKey"
 })
 result = json.loads(connection.getresponse().read())

Немного поясню:

  • yourAppId – ключ к нашему приложению.
  • yourRestApiKey – ключик от API, которым вы пользуетесь.

На официальном сайте сервиса вы найдете более подробную информацию. Затем массив result нужно обработать как объект JSON, и он уже готов к вставке в страничку HTML, которая будет печататься. На этом все, скрипт готов к работе!

А если вам необходимо заменить цепь двигателя, но вы не знаете где приобрести качественную, то заходите на сайт http://www.ua.all.biz/cep-dvigatelya-bgg1070160. Здесь вы найдете цепи для двигателей высокого качества, при этом по довольно доступным ценам. Здесь же найдется много других товаров по очень вкусным ценам!

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru yandex.ru
Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)