将绘图中绘制的图表导出为pdf



基本上,我的任务是在无头(无显示(Ubuntu 18机器上运行的python 2(一个旧但好的python 2.7.14(中创建一个报告。

另外-这是一台非常小的机器,所以无头铬解决方案或html2pdf(需要大量安装:wkhtmltopdf(不是一个选项。。。因此,我选择xhtml2pdf,它(在纸面上(应该是我的最佳选择。

它似乎确实可以将简单的html文件转换为pdf。但是,使用以下代码转换plotly创建的html文件会生成一个空页面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)

plotly创建的临时html文件似乎运行良好。虽然它是交互式的,所以也许这是我的问题?

在查看了许多其他包后,plotly似乎已经内置了它(使用了另一个项目:万花筒(-它只是简单地称之为"导出到图像";,这让我得出了一个错误的结论,即在没有选择文本的情况下,它将是类似于PNG/JPEG的东西(以及光栅/矢量图像/pdf的其他差异(。它可以将其导出为pdf格式:(文本选择+矢量图像。Easy Peasy。

最新更新