经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python读取HTML中的canvas并且以图片形式存入Word文档
来源:jb51  时间:2022/8/15 18:59:27  对本文有异议

前言

朋友提问:

创建Word文档并插入

市面上有很多图表绘制库,例如echarts和highcharts等等。对于这种由js动态绘制的图表,我们只能控制游览器自动截图存入word,

完整代码如下:

  1. from docx import Document
  2. import os
  3. from selenium import webdriver
  4.  
  5. browser = webdriver.Chrome()
  6. # 调整游览器大小达到调整图表宽度的目的
  7. browser.set_window_size(540, 1024)
  8. url = "file://" + os.path.abspath("html/awrcrt_MESDB_1_21369_21373.html").replace("\\", "/")
  9. browser.get(url)
  10.  
  11. doc = Document()
  12. for canvas in browser.find_elements_by_tag_name("canvas"):
  13. canvas.location_once_scrolled_into_view
  14. canvas.screenshot("tmp.png")
  15. doc.add_picture("tmp.png")
  16. doc.save("img.docx")

然后我们得到Word文档:

插入到已存在的Word文档指定的位置

后面朋友又反馈,只需要插入HTML中的指定几张图表到现有Word文档的指定位置。

待插入的图表元素都有对应的ID可以定位:

那我们只需要对Word文档要插入的位置进行标记,模板如下:

然后完整代码如下:

  1. from docx.shared import Mm
  2. from docxtpl import DocxTemplate, InlineImage
  3. from docx import Document
  4. import os
  5. from selenium import webdriver
  6.  
  7. browser = webdriver.Chrome()
  8. # 调整游览器大小达到调整图表宽度的目的
  9. browser.set_window_size(540, 1024)
  10. url = "file://" + os.path.abspath("html/awrcrt_MESDB_1_21369_21373.html").replace("\\", "/")
  11. browser.get(url)
  12.  
  13. tpl = DocxTemplate("数据库性能概览_模板.docx")
  14. canvas_ids = ["canvas_cpu", "canvas_conn",
  15. "canvas_commit", "canvas_logon", "canvas_event"]
  16. context = {}
  17. context["dbname"] = "MESDB"
  18. for canvas_id in canvas_ids:
  19. canvas = browser.find_element_by_id(canvas_id)
  20. canvas.location_once_scrolled_into_view
  21. canvas.screenshot(f"{canvas_id}.png")
  22. context[canvas_id] = InlineImage(tpl, f"{canvas_id}.png", width=Mm(165))
  23. tpl.render(context)
  24. tpl.save("数据库性能概览.docx")
  25. browser.close()

生成结果:

到此这篇关于Python读取HTML中的canvas并且以图片形式存入Word文档的文章就介绍到这了,更多相关Python读取canvas内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号