go语言 doc转换html,go语言使用wkhtmltopdf工具将html转成pdf
最近收到网友的提问后端怎么把html转成pdf文件,于是我就把我以前做的例子发出来给大家参考一下,如果对你有帮助的话请点个赞
1.首先选择适合自己的系统下载wkhtmltopdf工具
mac下载后安装成功会自动添加到环境变量 直接执行 wkhtmltopdf -V 测试是否安装成功
hfy@566-Mac-mini ~ % wkhtmltopdf -V
wkhtmltopdf 0.12.5 (with patched qt)
linux环境安装需要下载好,添加执行权限并手动加到环境变量下面,如果不想加入到环境变量在代码里写死路径也行
2.直接使用下面demo修改下就可以使用了
package main
import (
"context"
"errors"
"fmt"
"io/ioutil"
"os/exec"
"path/filepath"
)
var (
argsError = errors.New("no input file or out path")
fileTypeError = errors.New("the file must be in pdf format")
)
type HtmlToPdf struct {
Commond string
in string
out string
argsMap map[string]string
prams []string
}
func NewPdf() *HtmlToPdf {
args := map[string]string{
"--load-error-handling": "ignore",
"--footer-center": "第[page]页/共[topage]页",
"--footer-font-size": "8",
"-B": "31",
"-T": "32",
}
return &HtmlToPdf{
Commond: "wkhtmltopdf",
argsMap: args,
}
}
func (this *HtmlToPdf) OutFile(input string, outPath string) (string, error) {
var pdfPath string
// 输入 输出 参数不能为空
if input == "" || outPath == "" {
return pdfPath, argsError
}
//判断是否是生成pdf 文件
ext := filepath.Ext(outPath)
if ext != ".pdf" {
return pdfPath, fileTypeError
}
this.in = input
this.out = outPath
//构建参数
this.buildPrams()
//执行命令
if _, err := this.doExce();err != nil {
return pdfPath, err
}
return pdfPath, nil
}
func (this *HtmlToPdf) doExce() ([]byte, error) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
cmd := exec.CommandContext(ctx, this.Commond, this.prams...)
stdout, err := cmd.StderrPipe()
if err != nil {
return nil, err
}
defer stdout.Close()
//运行命令
err = cmd.Start()
if err != nil {
return nil, err
}
bytes, err := ioutil.ReadAll(stdout)
if err != nil {
return nil, err
}
cmd.Wait()
return bytes, err
}
func (this *HtmlToPdf) buildPrams() {
for key, val := range this.argsMap {
this.prams = append(this.prams, key, val)
}
//添加 输入 输出 参数
this.prams = append(this.prams, this.in, this.out)
}
func main() {
pdfOpt:= NewPdf()
htmlDemoPath := "xxxxx/src/demo/test.html"
PdfDemoPath := "xxxxx/src/demo/test.pdf"
str,err := pdfOpt.OutFile(htmlDemoPath,PdfDemoPath)
if err != nil {
fmt.Println("Error ",err)
return
}
fmt.Println(str)
}
效果:
image.png
go语言 doc转换html,go语言使用wkhtmltopdf工具将html转成pdf相关推荐
- c语言 格式转换函数,C语言中的格式转换函数.doc
C语言中的格式转换函数 C语言中的格式转换函数 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过 ...
- c语言 强制转换 作用域,C语言之总结1详解
1). 终端常用的命令: pwd 显示终端的工作路径. ls list 清单 显示当前工作路径下的所有的文件以及文件夹. ls -l 以详细信息显示当前工作路径下的所有的文件以及文件夹. cd 要切 ...
- C语言温度转换窗体,C语言1_1:温度转换
上机1_1:温度转换 int main() { int f; float c; scanf( "%d", &f ); //c = 5/9*(f-32); c = 5.0/9 ...
- c语言汇率转换代码_C语言兑换压岁钱
这是一个C语言 for 循环嵌套的示例:过年了,外婆给了桐桐 100 元压岁钱,桐桐想把它兑换成 50 元.20 元.10 元的小钞票.请你编写程序,帮桐桐算算共有多少种兑换方案,并输出每一种兑换方案 ...
- Word控件Spire.Doc 转换教程(二十三):保留或禁用从 Word 到 PDF 转换的超链接
超链接为读者提供了更多的附加信息,它被广泛用于我们的 word 文档.Spire.Doc 具有强大的超链接文字元素操作功能.开发者可以在word文档中添加.修改和删除超链接.Spire.Doc for ...
- Word控件Spire.Doc 转换教程(十五):在 C# 中将 HTML 文件转换为 PDF 和 XPS
HTML 文件广泛用于收集数据,出于安全,我们需要将其转换为 PDF 和 XPS 格式的可打印文档.您可以使用Spire.PDF轻松地将 URL 中的 HTML 页面转换为高质量的 PDF.本文将重点 ...
- 文档格式转换(Office文档转成PDF或XPS)
最近在做微信云打印服务器,云服务器与微信云服务器通信己经OK,现在有一个很核心的功能需要实现,就是服务器端文档的格式转换 目标:将office.txt.图片格式的文档转成PDF 查阅了一些资料,格式转 ...
- java 使用 freemarker模板 生成 word 并用 aspose 转换成PDF
添加依赖: <!-- freemarker生成word文件--><dependency><groupId>org.springframework.boot</ ...
- springboot项目图片转换成pdf
加入itext的依賴 <!--图片转pdf--><dependency><groupId>com.lowagie</groupId><artifa ...
最新文章
- SBIO | 西农韦革宏组-大豆土壤细菌门间负向互作影响群落的动态变化和功能
- Python学习:数据结构
- linux id高 负载高,linux下的rsync连接数突然增高,负载增高导致服务登录失败
- SOAP HTTP绑定
- docker部署springboot_创建SpringBoot项目部署到docker全过程
- 获取该字符串第N次出现的位置
- linux下c语言读取roed文件,如何在Linux系统上安装Android4.4.docx
- pom.xml文件第一行报错_Python文件读写指南
- react jquery_2019年React简介(面向仅了解jQuery的人们)
- kubernetes视频教程笔记 (21)-存储-configmap
- 阿里云云计算 45 阿里云云上安全
- dropload 使用表
- SQL后计算的利器SPL
- mrpoid模拟器java版_mrpoid模拟器2019下载
- CSDN Markdown 图片排版显示
- Springboot毕设项目查听课管理系统zkb6w(java+VUE+Mybatis+Maven+Mysql)
- 皱纹检测Wrinkle-detection
- Java博客项目(重点)
- proteus——555 PWM 发生器
- java 发邮件 乱码_JavaMail发送中文邮件乱码的解决 | 学步园
热门文章
- flowable DMN规则引擎几种类型解释_04
- 开发经验分享_01_遇到问题三步走(思路+实战)
- JFinalOA导出Excel
- python数据结构简单总结
- Java-静态方法、非静态方法
- vue 嵌套表格组件_使用form-create动态生成vue自定义组件和嵌套表单组件
- java http get_我是如何进入阿里巴巴的-面向春招应届生Java面试指南(九)
- linux性能分析top iostat vmstat free,linux 性能篇 -- top用法(示例代码)
- Python 函数声明和调用 - Python零基础入门教程
- 乐橙本地录像回放不了_乐橙智能锁来告诉你:你家门真的安全吗?