Экспорт графика, нарисованного в pdf

В основном моя задача - создать отчет на python 2 (старый, но хороший python 2.7.14), работающий на безголовой (без дисплея) машине Ubuntu 18.

Плюс - это очень маленькая машина, поэтому хромированное решение без головы или html2pdf (с тяжелой необходимой установкой: wkhtmltopdf) не вариант ... Следовательно, я выбираю xhtml2pdf, который (на бумаге) должен быть моим лучшим вариант.

Кажется, он работает с преобразованием простого файла HTML в PDF. Однако использование следующего кода для преобразования файла html, созданного с помощью plotly, создает пустую страницу pdf (не пустой файл, пустую страницу A4):

import plotly.graph_objects as go
import plotly
from xhtml2pdf import pisa 

labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen']
values = [4500, 2500, 1053, 500]
fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.3)])


html_filename = '/home/cpmuser/temp.html'
plotly.offline.plot(fig, filename = html_filename, auto_open=False)
source_file = open(html_filename, "rb")
source_html = source_file.read(1000000000)
print (len(source_html))
source_file.close()
output_filename = "/home/cpmuser/report.pdf"
result_file = open(output_filename, "wb")

pisa_status = pisa.CreatePDF(source_html, dest=result_file)
result_file.flush()
result_file.close()

print (pisa_status.err)

Временный html-файл, созданный plotly, кажется, работает нормально. Хотя он интерактивный, может, это моя проблема?


person rubmz    schedule 21.07.2020    source источник
comment
Это или не интерактивно? Не могли бы вы сказать, какой plotly.__version__ вы используете?   -  person rpanai    schedule 21.07.2020
comment
plotly .__ version__ == 4.9.0 И я нашел флаг, который должен был сделать его не интерактивным, но я думаю, что все дело в том, что plotly IS должен быть интерактивным. Мне, наверное, следует вернуться к рисованию чем-нибудь более простым ...   -  person rubmz    schedule 22.07.2020


Ответы (1)


После просмотра множества других пакетов кажется, что он встроен в plotly (с использованием другого проекта: kaleido) - он просто называет его Export to Image, что привело меня к неправильному выводу, что это будет что-то вроде PNG / JPEG без выделения текста (среди другие отличия растрового / векторного изображения / pdf). Он экспортирует его как можно в формате pdf :) выделение текста + векторные изображения. Очень просто.

person rubmz    schedule 23.07.2020