Сохранить строку HTML в PDF в Python
У меня есть HTML-строка, которую я хочу сохранить в виде файла PDF в Python. Я использую PDFkit для этой цели. Ниже приведен код, который я попробовал для этой цели. В приведенном ниже коде я также пытаюсь передать изображение через сервер торнадо.
class MainHandler(RequestHandler):
def get(self):
self.write('hello!')
class ImageHandler(RequestHandler):
def get(self):
d={}
d["mov1"]=1
d["mov2"]=10
d["mov3"]=40
d["mov4"]=3
py.bar(range(len(d)),d.values(),align="center")
py.xticks(range(len(d)),d.keys())
io=StringIO()
py.savefig(io,format='svg')
self.set_header("Content-Type", "image/svg+xml")
print io.getvalue()
config = pdfkit.configuration(wkhtmltopdf='E:\\wkhtmltopdf\\bin')
pdfkit.from_string(io.getvalue(),"E:\\hello.pdf",configuration=config) #Error here
self.write(io.getvalue())
app = Application([
url(r"/", MainHandler),
url(r"/Image",ImageHandler)
])
if __name__=="__main__":
app.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Я установил wkhtmltopdf на E диск. Я получаю исключение,
ERROR:tornado.application:Uncaught exception GET /Image (::1)
HTTPServerRequest(protocol='http', host='localhost:8888', method='GET', uri='/Image', version='HTTP/1.1', remote_ip='::1', headers={'Accept-Language': 'en-US,en;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch', 'Host': 'localhost:8888', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36', 'Connection': 'keep-alive', 'Cookie': '_ga=GA1.1.359367893.1418721747', 'If-None-Match': '"ee884f005691a9736e5e380cc68cd4c9679bf2a7"'})
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\tornado\web.py", line 1332, in _execute
result = method(*self.path_args, **self.path_kwargs)
File "E:\eclipse_workspace\Visualisation\module1\mod1.py", line 61, in get
config = pdfkit.configuration(wkhtmltopdf='E:\\wkhtmltopdf\\bin')
File "C:\Python27\lib\site-packages\pdfkit\api.py", line 79, in configuration
return Configuration(**kwargs)
File "C:\Python27\lib\site-packages\pdfkit\configuration.py", line 27, in __init__
'https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf' % self.wkhtmltopdf)
IOError: No wkhtmltopdf executable found: "E:\wkhtmltopdf\bin"
If this file exists please check that this process can read it. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
ERROR:tornado.access:500 GET /Image (::1) 246.00ms
Пока я открыт для использования любых других пакетов. Я также хочу знать, какую ошибку я делаю.
1 ответ
Эта ссылка говорит, что с учетом вышеуказанной ошибки путь должен быть указан как местоположение двоичного файла wkhtmltopdf. Что я и думал. Но это сработало для меня, когда изменил конфиг на
config = pdfkit.configuration(wkhtmltopdf='E:\\wkhtmltopdf\\bin\\wkhtmltopdf.exe')