当前位置: 首页 > backend >正文

Wkhtmltopdf使用

Wkhtmltopdf使用

  • 1.windows本地使用
  • 2.golang+windows环境使用
  • 3.golang+docker容器中使用

1.windows本地使用

官网地址 https://wkhtmltopdf.org/,直接去里面下载自己想要的版本,这里以windows版本为例

在这里插入图片描述

在这里插入图片描述

2.golang+windows环境使用

1.安装扩展
go get -u github.com/SebastiaanKlippert/go-wkhtmltopdf
2.写一段测试代码
// 写一个测试代码测试一下
package generateFile
import ("github.com/SebastiaanKlippert/go-wkhtmltopdf""strings"
)
func GeneratePDF(title, content string) (res []byte, err error) {content = `<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><style>body { font-family: "Microsoft YaHei", SimSun, sans-serif; }</style>
</head>
<body>
<h1 style="text-align: center;">` + title + `</h1>` + content + `
</body>
</html>`// 创建 PDF 生成器var pdf *wkhtmltopdf.PDFGeneratorpdf, err = wkhtmltopdf.NewPDFGenerator()if err != nil {return}// 从 HTML 字符串创建页面page := wkhtmltopdf.NewPageReader(strings.NewReader(content))// 设置页面选项page.DisableSmartShrinking.Set(true)page.Zoom.Set(1.25)// 将页面添加到生成器pdf.AddPage(page)// 设置全局选项pdf.MarginTop.Set(15)pdf.MarginBottom.Set(15)pdf.MarginLeft.Set(15)pdf.MarginRight.Set(15)pdf.Dpi.Set(300)pdf.Orientation.Set(wkhtmltopdf.OrientationPortrait)pdf.NoPdfCompression.Set(true) // 不压缩PDF以获得更好质量pdf.PageSize.Set(wkhtmltopdf.PageSizeA4)// 生成 PDFerr = pdf.Create()if err != nil {return}res = pdf.Bytes()return
}
 3.apifox调用查看效果

在这里插入图片描述

3.golang+docker容器中使用

1.编写 dockerfile

FROM golang:1.24.2 as builderENV GO111MODULE=on \GOPROXY=https://goproxy.cn,direct \CGO_ENABLED=0 \GOOS=linux \GOARCH=amd64WORKDIR /appCOPY . /appRUN go build -o mainFROM alpine:3.13RUN apk add tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
RUN apk del tzdataRUN apk add --update --no-cache \libgcc libstdc++ libx11 glib libxrender libxext libintl \ttf-dejavu ttf-droid ttf-freefont ttf-liberation ttf-ubuntu-font-familyCOPY --from=madnight/alpine-wkhtmltopdf-builder:0.12.5-alpine3.10-3660174986 \/bin/wkhtmltopdf /bin/wkhtmltopdfWORKDIR /appCOPY --from=builder /app .//RUN cp /app/assets/fonts/* /usr/share/fonts/TTFEXPOSE 80/tcpCMD ["/app/main"]
2.直接代码里面调用就行了效果一样
http://www.xdnf.cn/news/8316.html

相关文章:

  • 医学人工智能中的分层处理与跨模态融合:深度架构设计研究(基础教程.上)
  • 从负债到上岸:湖北理元理律师事务所的专业债务规划之道
  • 如何升级 npm:从版本管理到最佳实践
  • 未来安全与持续进化
  • PaddleX 使用案例
  • 车载诊断架构 --- 车载诊断有那些内容(上)
  • Win/Linux安装flash attention2
  • Python刷题:神奇的函数
  • VSCode如何像Pycharm一样“““回车快速生成函数注释文档?如何设置文档的样式?
  • 在 Ubuntu 虚拟机中实现 HTML 表单与 C 语言 HTTP 服务器交互
  • AI与.NET技术实操系列(七):使用Emgu CV进行计算机视觉操作
  • Linux系统编程-DAY03
  • 26-RTOS的基本介绍
  • Vitis 2021.1安装步骤
  • oracle数据库查看当前session会话数、查询最大支持连接数、修改最大支持连接数
  • SDL文字库介绍和RV1126交叉编译SDL文字库
  • 【Java】CompletableFuture.orTimeout在JDK21以下版本有内存泄漏及解决方案
  • 软件设计师“IP协议与子网划分”真题考点分析——求三连
  • Docker安装postgres数据库
  • Vue.js教学第十章:自定义命令的创建使用与应用
  • python——多线程编程(threading)
  • 【工具】Quicker/VBA|PPT 在指定位置添加有颜色的参考线
  • 交叉编译DirectFB报错解决方法
  • Day 28 训练
  • nginx和docker常用指令
  • thinkpad x220降频到0.7Ghz解决办法
  • 遥控器芯片6nm与3nm技术对比!
  • 如何将吉客云奇门数据无缝对接金蝶云星空
  • 远程升级方案(经通讯管理机)
  • 怎么有效降低知网AIGC率?