本文主要是介绍grafana-reporter导出中文图表(修改go源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、标题中文
grafana-reporter安装过程,看前面教程吧,标题中文我修改了go调用的命令latex为xelatex,原因是latex需要安装ctex模块调用中文始终无法成功;修改为xelatex后,使用xeCJK模块成功导出中文标题。
注意:使用此方法需要安装xelatex和xeCJK的模块
- 修改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 }
- 修改github.com/IzakMarais/reporter/report/texTemplate.go
在const defaultTemplate中新增两行
\usepackage{xeCJK}
\setCJKmonofont{KaiTi}
二、点击下载中文
默认点击下载是unicode码文件名称,比如u4e2du6587u6d4bu8bd5DNS.pdf,不太方便。
- 修改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源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!