Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2015 20:26:26

mister
Зарегистрирован: 2015-01-07
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

Всем здравстауйте!
ВСЕХ С НАСТУПИВШИМИ ПРАЗДНИКАМИ С НОВЫМ 2015 ГОДОМ и РОЖДЕСТВОМ!

Прошу оказать небольшую консультацию в решении задачи.
Дано: Python 2.7, полученная из интернета html-ка, необходимо ее сохранить в pdf-файл, предварительно немно приведя ее к определенному виду.

Собственно для получения html и трансформации внужный вид проблем особых не составило. Было решено взять httplib + lxml соответственно. Но вот с сохранением результата трансформации возникли сложности.
Выбрал xhtml2pdf:

from xhtml2pdf import pisa
html = '<h1>Hello!!</h1>'
result = pisa.CreatePDF(html, file('html.pdf', 'w'))
result.dest.close()

В результате имею следующее: ошибок нет, файл html.pdf создается, но пустой.

Куда копать, что не так?
Заранее благодарен всем за помощь!

Отредактировано mister (Янв. 7, 2015 20:36:09)

Офлайн

#2 Янв. 7, 2015 20:29:55

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

from xhtml2pdf import pisa
html = '<h1>Hello!!</h1>'
result = pisa.CreatePDF(html, file('html.pdf', 'w'))
result.dest.close()
вот, у меня работает
я так и не понял почему у вас было xhtml
result = pisa.CreatePDF(xhtml, file('html.pdf', 'w'))



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Янв. 7, 2015 20:36:35

mister
Зарегистрирован: 2015-01-07
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

terabayt
я так и не понял почему у вас было xhtml
Это опечатка! Исправил!

Отредактировано mister (Янв. 7, 2015 20:37:10)

Офлайн

#4 Янв. 7, 2015 20:39:21

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

вот файл
давайте весь код, может там что-то



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Янв. 7, 2015 21:20:25

mister
Зарегистрирован: 2015-01-07
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

terabayt
давайте весь код, может там что-то
А собственно это и есть весь код. Начал пробовать на самом бональном примере.

Офлайн

#6 Янв. 8, 2015 00:31:14

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

Была необходимость прикрутить к проекту на джанго генерацию pdf. В начале тоже остановил свой выбор на xhtml2pdf, но на практике генерация большего количества страниц (>100) занимала ощутимое время + нелучшая работа со стилями (список поддерживаемых довольно ограничен).
Для меня решением стало использование wkhtmltopdf. Относительно писы генерирует pdf просто реактивно, да и страницы получаются куда более близкие к оригинальному html. Рекомендую.

Офлайн

#7 Янв. 8, 2015 10:11:41

mister
Зарегистрирован: 2015-01-07
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

botinag
Рекомендую.
Спасибо! Попробую!

Офлайн

#8 Янв. 10, 2015 21:59:11

mister
Зарегистрирован: 2015-01-07
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

Всем снова здравствуйте!

В общем победил я xhtml2pdf сейчас pdf генерится! Все отлично, но вот с русскими символами “беда” - за место букв квадраты, пробовал подключать в html-е шрифты через стили, но ничего не получилось.

Может кто пробовал?

Офлайн

#9 Янв. 10, 2015 22:07:37

alex925
Зарегистрирован: 2015-01-08
Сообщения: 204
Репутация: +  14  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

mister
пробовал подключать в html-е шрифты через стили, но ничего не получилось.
Дело точно не в шрифтах, более чем уверен, что проблема с кодировками.
В html явно указано в какой кодировке страница?

Офлайн

#10 Янв. 10, 2015 22:13:09

mister
Зарегистрирован: 2015-01-07
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт HTML в PDF

Да, конечно, указывал!
Вот последний код, без стилей, с указанием кодировки html-я:

from xhtml2pdf import pisa
html = '''<html>
<head>
<META content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body>
<h1>Привет!!!</h1>
</body>
</html>'''
pdf = pisa.CreatePDF(html, file('html.pdf', 'w'), encoding='utf-8')
pdf.dest.close()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version