grafana-reporter导出中文图表(修改go源码)

2023-11-28 10:48

本文主要是介绍grafana-reporter导出中文图表(修改go源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、标题中文

grafana-reporter安装过程,看前面教程吧,标题中文我修改了go调用的命令latex为xelatex,原因是latex需要安装ctex模块调用中文始终无法成功;修改为xelatex后,使用xeCJK模块成功导出中文标题。

注意:使用此方法需要安装xelatex和xeCJK的模块

  1. 修改github.com/IzakMarais/reporter/report/report.go文件
    225行和234行内容,把pdflatex换成xelatex
224 func (rep *report) runLaTeX() (pdf *os.File, err error) {
225         //cmdPre := exec.Command("pdflatex", "-halt-on-error", "-draftmode", reportTexFile)
226         cmdPre := exec.Command("xelatex", "-halt-on-error", reportTexFile)
227         cmdPre.Dir = rep.tmpDir
228         outBytesPre, errPre := cmdPre.CombinedOutput()
229         log.Println("Calling LaTeX - preprocessing")
230         if errPre != nil {
231                 err = fmt.Errorf("error calling LaTeX preprocessing: %q. Latex preprocessing failed with output: %    s ", errPre, string(outBytesPre))
232                 return
233         }
234         //cmd := exec.Command("pdflatex", "-halt-on-error", reportTexFile)
235         cmd := exec.Command("xelatex", "-halt-on-error", reportTexFile)
236         cmd.Dir = rep.tmpDir
237         outBytes, err := cmd.CombinedOutput()
238         log.Println("Calling LaTeX and building PDF")
239         if err != nil {
240                 err = fmt.Errorf("error calling LaTeX: %q. Latex failed with output: %s ", err, string(outBytes))
241                 return
242         }
243         pdf, err = os.Open(rep.pdfPath())
244         return
245 }
  1. 修改github.com/IzakMarais/reporter/report/texTemplate.go
    在const defaultTemplate中新增两行
    \usepackage{xeCJK}
    \setCJKmonofont{KaiTi}
    在这里插入图片描述

二、点击下载中文

默认点击下载是unicode码文件名称,比如u4e2du6587u6d4bu8bd5DNS.pdf,不太方便。

  1. 修改github.com/IzakMarais/reporter/cmd/grafana-reporter/handler.go
    引用bytes模块,新增函数conv_str,修改addFilenameHeader函数

conv_str函数如下:

func conv_str(filename string)string {buf := bytes.NewBuffer(nil)i, j := 0, len(filename)for i < j {x := i + 6if x > j {buf.WriteString(filename[i:])break}if filename[i] == '\\' && filename[i+1] == 'u' {hex := filename[i+2 : x]//fmt.Println(hex)r, err := strconv.ParseUint(hex, 16, 64)if err == nil {//fmt.Println(string(r))buf.WriteRune(rune(r))} else {buf.WriteString(filename[i:x])}i = x} else {buf.WriteByte(filename[i])i++}}//fmt.Println(buf.String())return buf.String()
}

修改addFilenameHeader函数如下:
在这里插入图片描述

这篇关于grafana-reporter导出中文图表(修改go源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/429579

相关文章

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

Go Gorm 示例详解

《GoGorm示例详解》Gorm是一款高性能的GolangORM库,便于开发人员提高效率,本文介绍了Gorm的基本概念、数据库连接、基本操作(创建表、新增记录、查询记录、修改记录、删除记录)等,本... 目录1. 概念2. 数据库连接2.1 安装依赖2.2 连接数据库3. 数据库基本操作3.1 创建表(表关

Mysql8.0修改配置文件my.ini的坑及解决

《Mysql8.0修改配置文件my.ini的坑及解决》使用记事本直接编辑my.ini文件保存后,可能会导致MySQL无法启动,因为MySQL会以ANSI编码读取该文件,解决方法是使用Notepad++... 目录Myhttp://www.chinasem.cnsql8.0修改配置文件my.ini的坑出现的问题