最近收到网友的提问后端怎么把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相关推荐

  1. c语言 格式转换函数,C语言中的格式转换函数.doc

    C语言中的格式转换函数 C语言中的格式转换函数 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过 ...

  2. c语言 强制转换 作用域,C语言之总结1详解

    1). 终端常用的命令: pwd 显示终端的工作路径. ls  list 清单 显示当前工作路径下的所有的文件以及文件夹. ls -l 以详细信息显示当前工作路径下的所有的文件以及文件夹. cd 要切 ...

  3. C语言温度转换窗体,C语言1_1:温度转换

    上机1_1:温度转换 int main() { int f; float c; scanf( "%d", &f ); //c = 5/9*(f-32); c = 5.0/9 ...

  4. c语言汇率转换代码_C语言兑换压岁钱

    这是一个C语言 for 循环嵌套的示例:过年了,外婆给了桐桐 100 元压岁钱,桐桐想把它兑换成 50 元.20 元.10 元的小钞票.请你编写程序,帮桐桐算算共有多少种兑换方案,并输出每一种兑换方案 ...

  5. Word控件Spire.Doc 转换教程(二十三):保留或禁用从 Word 到 PDF 转换的超链接

    超链接为读者提供了更多的附加信息,它被广泛用于我们的 word 文档.Spire.Doc 具有强大的超链接文字元素操作功能.开发者可以在word文档中添加.修改和删除超链接.Spire.Doc for ...

  6. Word控件Spire.Doc 转换教程(十五):在 C# 中将 HTML 文件转换为 PDF 和 XPS

    HTML 文件广泛用于收集数据,出于安全,我们需要将其转换为 PDF 和 XPS 格式的可打印文档.您可以使用Spire.PDF轻松地将 URL 中的 HTML 页面转换为高质量的 PDF.本文将重点 ...

  7. 文档格式转换(Office文档转成PDF或XPS)

    最近在做微信云打印服务器,云服务器与微信云服务器通信己经OK,现在有一个很核心的功能需要实现,就是服务器端文档的格式转换 目标:将office.txt.图片格式的文档转成PDF 查阅了一些资料,格式转 ...

  8. java 使用 freemarker模板 生成 word 并用 aspose 转换成PDF

    添加依赖: <!-- freemarker生成word文件--><dependency><groupId>org.springframework.boot</ ...

  9. springboot项目图片转换成pdf

    加入itext的依賴 <!--图片转pdf--><dependency><groupId>com.lowagie</groupId><artifa ...

最新文章

  1. SBIO | 西农韦革宏组-大豆土壤细菌门间负向互作影响群落的动态变化和功能
  2. Python学习:数据结构
  3. linux id高 负载高,linux下的rsync连接数突然增高,负载增高导致服务登录失败
  4. SOAP HTTP绑定
  5. docker部署springboot_创建SpringBoot项目部署到docker全过程
  6. 获取该字符串第N次出现的位置
  7. linux下c语言读取roed文件,如何在Linux系统上安装Android4.4.docx
  8. pom.xml文件第一行报错_Python文件读写指南
  9. react jquery_2019年React简介(面向仅了解jQuery的人们)
  10. kubernetes视频教程笔记 (21)-存储-configmap
  11. 阿里云云计算 45 阿里云云上安全
  12. dropload 使用表
  13. SQL后计算的利器SPL
  14. mrpoid模拟器java版_mrpoid模拟器2019下载
  15. CSDN Markdown 图片排版显示
  16. Springboot毕设项目查听课管理系统zkb6w(java+VUE+Mybatis+Maven+Mysql)
  17. 皱纹检测Wrinkle-detection
  18. Java博客项目(重点)
  19. proteus——555 PWM 发生器
  20. java 发邮件 乱码_JavaMail发送中文邮件乱码的解决 | 学步园

热门文章

  1. flowable DMN规则引擎几种类型解释_04
  2. 开发经验分享_01_遇到问题三步走(思路+实战)
  3. JFinalOA导出Excel
  4. python数据结构简单总结
  5. Java-静态方法、非静态方法
  6. vue 嵌套表格组件_使用form-create动态生成vue自定义组件和嵌套表单组件
  7. java http get_我是如何进入阿里巴巴的-面向春招应届生Java面试指南(九)
  8. linux性能分析top iostat vmstat free,linux 性能篇 -- top用法(示例代码)
  9. Python 函数声明和调用 - Python零基础入门教程
  10. 乐橙本地录像回放不了_乐橙智能锁来告诉你:你家门真的安全吗?