python - 如何将 Dash 仪表板格式化并打印为 PDF?

标签 python pdf plotly-dash

我刚刚在 Dash 中创建了一个仪表板,它会自动适合我的计算机显示器,而且看起来还不错。我现在遇到的问题是我必须找到一种打印为 PDF 的方法。

我见过 Vanguard 示例,它使用外部 CSS 格式化为 A4 尺寸,然后使用打印按钮(使用外部 javascript?)。有没有一种更“Dash 原生”的方法来做到这一点,不需要我学习另一种编程语言(我只知道 Python)?

Dash 用户指南上似乎没有任何内容 https://dash.plot.ly/ ,我找到的就是这个https://plot.ly/python/pdf-reports/其中描述了如何将单个绘图打印为 pdf。

理想情况下,它会按照现在的在线格式(在线布局)进行格式化,而不会丢失两侧的空间,然后我可以使用另一个可以打印的布局(pdf布局)。

任何有关如何继续此操作的链接或建议将不胜感激!

最佳答案

如果将绘图保存为 png 图像(图像最左侧的选项),您可以从plotly 获取 pdf: Look at here

然后使用该代码将 png 转换为 pdf:

from PIL import Image
# Save your plot as png file (option "Download as png" in upper-left corner)
PNG_FILE = 'horizontal-bar.png'
PDF_FILE = 'horizontal-bar.pdf'

rgba = Image.open(PNG_FILE)
rgb = Image.new('RGB', rgba.size, (255, 255, 255))  # white background
rgb.paste(rgba, mask=rgba.split()[3])               # paste using alpha channel as mask
rgb.save(PDF_FILE, 'PDF', resolution=100.0)

如果你是个懒人,你可以使用库 webkit2png check here how 。这样您就不必单击“下载为 png”按钮,只需将 html 转换为 png,然后再转换为 pdf。

关于python - 如何将 Dash 仪表板格式化并打印为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494924/

相关文章:

Python 破折号 : concurrently updating an element within a callback

python - 在破折号中将值从一页传递到另一页

python - 如何从 NumPy 数组中按行选择元素?

Java Applet PDF 打印

python - 如何使用 pandas 模块合并(即 'concat' )100+ .csv 文件?

java - 将 pdf 附加到 servlet 内存中的 itext pdf

java - 将字体添加到 Apache Pdfbox?

html - Dash - dbc.container Fluid = True 不覆盖所有可用空间

python - 如何在 python numpy 中从周围的白色背景中裁剪对象?

python - 如何仅展平numpy数组的某些维度