Преобразовываем HTML страницу в PDF файл при помощи Qt и python

Очень было бы круто уметь генерировать PDF из обычной html страници с любимого сайта..
На самом деле это очень не сложно.
Нам понадобится python и Qt, ну и интернет, которым вы уже обзавелись рас это читаете…

Создаём будущий скрипт pdf.py и начинаем писать..

Первая строка для того чтобы можно было запускать так:

./pdf

Пишем:

#!/usr/bin/python

Теперь импортим всё необходимое:

import sys

from PyQt4.QtCore import *

from PyQt4.QtGui import *

from PyQt4.QtWebKit import *

Создаём приложение Qt:

app = QApplication(sys.argv)

Загружаем страницу:

web = QWebView()

web.load(QUrl(«https://how2.org.ua/»))

Конвертировать будем при помощи печати. Создадим принтер и будем «печатать» в pdf.
Готовим принтер:

printer = QPrinter()

Устанавливаем размер бумаги:

printer.setPageSize(QPrinter.A4)

Формат:

printer.setOutputFormat(QPrinter.PdfFormat)

имя файла:

printer.setOutputFileName(«file.pdf»)

Создаём функцию конвертирования :

def convertIt():

    web.print_(printer)

    print «Pdf generated»

    QApplication.exit()

Соединяем событие окончания загрузки и вызов функции конвертирования:

QObject.connect(web, SIGNAL(«loadFinished(bool)»), convertIt)

После всего выходим в цикл приложения Qt:

sys.exit(app.exec_())

Вот и всё! Видите как просто. Можно конечно ещё написать обработчик параметров консоли. Чтобы каждый раз не ходить в файл, чтобы изменять url.. но об этом не в этот раз.
Целиком:

#!/usr/bin/python

import sys

from PyQt4.QtCore import *

from PyQt4.QtGui import *

from PyQt4.QtWebKit import *

app = QApplication(sys.argv)

web = QWebView()

web.load(QUrl(«https://how2.org.ua/»))

#web.show() можно показать страницу

printer = QPrinter()

printer.setPageSize(QPrinter.A4)

printer.setOutputFormat(QPrinter.PdfFormat)

printer.setOutputFileName(«file.pdf»)

def convertIt():

    web.print_(printer)

    print «Pdf generated»

    QApplication.exit()

QObject.connect(web, SIGNAL(«loadFinished(bool)»), convertIt)

sys.exit(app.exec_())

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий